您好,目前我在使用Akka和Child Actors时在Scala上收到以下错误:
[warn] /Users/schmitch/projects/envisia/envisia-erp-loki/app/worker/CalculationWorker.scala:43: discarded non-Unit value
[warn] } yield cb1).map { data =>
[warn] ^
[warn] one warning found
目前我的演员接受:
override def receive = {
case cm: CalculationModal =>
val upper = sender() // To get the real sender we need to first have a good reference to him
log.debug(s"Got a new calculation")
(for {
cb1 <- (cn ? true).mapTo[Boolean]
} yield cb1).map { data =>
log.debug(s"Callback1: $data")
upper ! data
}
}
收到了这位儿童演员:
override def receive = {
case _ =>
println(s"WS: $ws")
sender() ! true
}
但是我不知道为什么我会收到这个警告,因为第43行是应该是布尔值的屈服线,不会被丢弃......目前我想要有2个有2个回调的子actor cb1和cb2将独立计算,以便我有更好的并发性。
目前,对于我的测试,他们都只返回true。
答案 0 :(得分:3)
将您的map
更改为foreach
。
receive
为PartialFunction[Any, Unit]
,.map
上的Future
号码会产生另一个Future
,而非Unit
。调用.foreach
代替会生成Unit
。