【问题标题】:How can I declare a method which returns an Option value in Thrift/Scrooge?如何在 Thrift/Scrooge 中声明一个返回 Option 值的方法?
【发布时间】:2015-07-14 15:30:08
【问题描述】:

我使用 Scrooge 生成 Thrift 接口代码如下:

struct UserInfo {
  1: i64 userId,
  2: string name
}

service userservice {
  UserInfo getUserById(1:i64 userId)
}

Scrooge 将从上面的 IDL 文件生成此方法:def getUserById(userId: Long): Future[UserInfo]

但是,在 scala 中,可能不存在的值可以通过 Option 数据类型表示。因此,以 Scala 方式生成的节俭代码可能看起来像 def getUserById(userId: Long): Future[Option[UserInfo]]。虽然选项是特定于 scala 的,但无论如何让 Scrooge 支持这个?

非常感谢!

【问题讨论】:

    标签: scala thrift future scrooge


    【解决方案1】:

    您可以使用list<T> 模拟选项。而且由于 Option 可以被视为 0|1 元素的集合,因此从语义角度来看,这种替换也是正确的。

    要将此列表转换为 Scala 代码中的选项,您可以使用 headOption 方法。

    【讨论】:

      猜你喜欢
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 2018-05-15
      相关资源
      最近更新 更多