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

标签 scala thrift future scrooge

我正在使用 Scrooge 生成 Thrift 接口(interface)代码如下:

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 支持它?

非常感谢!

最佳答案

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

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

关于scala - 如何在 Thrift/Scrooge 中声明一个返回 Option 值的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043804/

相关文章:

c++ - CMakeLists.txt 的 Apache Thrift 错误

scala - future [选项[T]] : Keep future if Option is defined otherwise fallback to another future

c++ - std::future::get() 或 std::future::wait() 是 std::thread::join() 的替代品吗?

asynchronous - 如何有条件地退还不同类型的 future ?

java - Git 如何如此快速地计算 SHA 哈希值?

scala - Scala 中简单表达式的非法开始

java - 将 groupBy rdd 结果保存回 HDFS

import - Thrift:无法解析导入javax.annotation

scala - 将列表的所有元素推送到scala中的堆栈

scala:错误:递归值需要类型