Scala 从Actor返回值

Scala 从Actor返回值,scala,actor,Scala,Actor,对于以下检查3整除性的参与者: 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 _ =&g

对于以下检查3整除性的参与者:

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 _ => 
    }
 }
}
当我试图从CheckActor实例获取
sum
的值时

actor1!“calcSum”//actor1的类型为“CheckActor”

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

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

发送消息的操作(
actor!foo
)返回
Unit
,因为没有要返回的内容,所以触发并忘记(异步)。如果您希望/期望得到某种回复,请改用
询问
-这将返回您可以使用的
未来[任何]


另一方面,看起来您使用的是Scala Actors,如果您想查看Actors,我建议您查看Akka()——从Scala 2.10.0开始,Scala Actors已被弃用,并被Akka取代。

发送消息(
actor!foo
)的操作返回
单位
,因为没有什么可返回的,您会触发并忘记(异步)。如果您希望/期望得到某种响应,请改用
询问
-这将返回您可以使用的
未来[任何]

另一方面,看起来您使用的是Scala Actors,如果您想查看Actors,我建议您查看Akka()——从Scala 2.10.0开始,Scala Actors已被弃用并由Akka取代