我如何声明一个 returns 选项值在 Thrift/Scrooge 中的方法?
How can I declare a method which returns an Option value in Thrift/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-way 中生成的节俭代码可能看起来像 def getUserById(userId: Long): Future[Option[UserInfo]]
。虽然该选项是特定于 scala 的,但有没有办法让 Scrooge 支持它?
非常感谢!
您可以使用list<T>
来模拟选项。由于 Option 可以被视为 0|1 元素的集合,因此从语义角度来看,此替换也是正确的。
要将此列表转换为 Scala 代码中的选项,您可以使用 headOption
方法。
我正在使用 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-way 中生成的节俭代码可能看起来像 def getUserById(userId: Long): Future[Option[UserInfo]]
。虽然该选项是特定于 scala 的,但有没有办法让 Scrooge 支持它?
非常感谢!
您可以使用list<T>
来模拟选项。由于 Option 可以被视为 0|1 元素的集合,因此从语义角度来看,此替换也是正确的。
要将此列表转换为 Scala 代码中的选项,您可以使用 headOption
方法。