斯卡拉,阿卡,儿童演员为什么“丢弃非单位价值”?

时间:2015-07-03 10:03:33

标签: scala akka

您好,目前我在使用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。

1 个答案:

答案 0 :(得分:3)

将您的map更改为foreach

receivePartialFunction[Any, Unit].map上的Future号码会产生另一个Future,而非Unit。调用.foreach代替生成Unit