Akka演员返回类型Any而不是Vector [产品]

时间:2017-07-09 23:04:42

标签: scala akka

我在akka中称呼这个:

for {
  products <- myActor ? MyActor.Search("...", 25)
} yield {
  val model = MyModel(products) 
}

MyModel(products)行有一个错误,说预期为Vector[Product],实际为Any

签名是这样的:

def search(searchText: String, hitsPerPage: Int): Vector[Product]

为什么它会以Any类型返回?

found   : Any
[error]  required: Vector[com.example.Product]

我是否需要投射回复?

1 个答案:

答案 0 :(得分:5)

来自官方documentation

  

另请注意,Actor返回的Future是fsck,因为Actor是动态的....当使用非阻塞时,最好使用Future[Any]方法安全地尝试强制转换a期望类型的未来:

mapTo
  

import scala.concurrent.Future import akka.pattern.ask val future: Future[String] = ask(actor, msg).mapTo[String] 方法会返回一个新的mapTo,其中包含投射成功时的结果,如果没有,则返回Future

因此,您可以使用mapTo获取ClassCastException类型的结果:

Vector[Product]