【问题标题】:How to convert a result of ask to appropriate type?如何将询问的结果转换为适当的类型?
【发布时间】:2014-08-09 11:32:37
【问题描述】:

我正在使用 ask (?) 从 Actor 获取 Set[String] 类型的值。然而,演员返回Future[Any]

将此Future[Any] 转换为Future[Set[String]] 的正确方法是什么?

val result : Future[Any] = myactor ? GetSomeValue
//convert Future[Any] to Future[Set[String]]

【问题讨论】:

    标签: scala akka spray


    【解决方案1】:

    Futures 上有一个名为 mapTo 的方法:

    val result : Future[Set[String]] = (myactor ? GetSomeValue).mapTo[Set[String]]
    

    如果施法不成功,它将引发异常。来自docs

    创建一个新的 Future[S],如果它符合 S 的擦除类型,则使用此 Future 的结果完成,否则为 ClassCastException。

    【讨论】:

    • 那么这个新的 Future 将完成这个错误。在内部,此方法只使用普通的map 方法。它所做的只是检查演员阵容是否有效。与法线贴图一样,future 会以原始错误完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多