如何在Thrift / Scrooge中声明一个返回Option值的方法?

时间:2015-05-05 03:31:42

标签: scala thrift future scrooge

我使用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方式生成的thrift代码可能看起来像def getUserById(userId: Long): Future[Option[UserInfo]]。虽然Option是特定于scala的,但是无论如何都要让Scrooge支持这个吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

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

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