我使用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支持这个吗?
非常感谢!
答案 0 :(得分:0)
您可以使用list<T>
来模仿选项。而且由于Option可以被视为0 | 1元素的集合,因此从语义角度来看,这种替换也是正确的。
要将此列表转换为Scala代码中的选项,您可以使用headOption
方法。