Scala 从Actor返回值
对于以下检查3整除性的参与者: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
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取代