我在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]
我是否需要投射回复?
答案 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]