0

对于以下检查可被 3 整除的 Actor:

class CheckActor(actor: Actor) extends Actor {  
 println("created actor")

 var sum = 0
 def act = loop {
    react {
        case x:Int if (x % 3 == 0) => sum+=1
            ...
        case "calcSum" => sum
        case _ => 
    }
 }
}

当我尝试sum从 CheckActor 实例中获取值时...

actor1 ! "calcSum" // actor1 is of type "CheckActor"

我在 sum1 的类型不匹配上看到了这个错误。

$>scalac Count.scala
Count.scala:38: error: type mismatch;
 found   : Unit
 required: Int
                val sum1: Int = actor1 ! "calcSum"
                                       ^
one error found
4

1 回答 1

4

发送消息 ( actor ! foo) 的操作返回Unit,因为没有什么可以返回,你触发并忘记(异步)。如果您想要/期望得到某种回应,请使用askor?代替 - 这将返回给您一个Future[Any]您可以使用的。

在相关说明中,您似乎正在使用 Scala Actors,如果您想研究Actors,我建议您查看 Akka ( http://akka.io/ ) - 从 Scala 2.10.0 开始,Scala Actors 已被弃用并且被阿卡取代。

于 2013-09-01T05:35:04.440 回答