Scala演员如何返回响应消息的值?
发布时间:2020-12-16 09:20:07 所属栏目:安全 来源:网络整理
导读:有很多演员回复给发送者回复另一个消息的示例,但是浏览API文档时我注意到了!和!作为CanReply特征的一部分(这似乎是2.8: http://www.scala-lang.org/archives/rc-api/scala/actors/CanReply.html的新增)的运算符.因此,我想知道是否只是使接收/反应块返回值
有很多演员回复给发送者回复另一个消息的示例,但是浏览API文档时我注意到了!和!作为CanReply特征的一部分(这似乎是2.8:
http://www.scala-lang.org/archives/rc-api/scala/actors/CanReply.html的新增)的运算符.因此,我想知道是否只是使接收/反应块返回值的情况,即将PartialFunction返回类型为Unit以外的其他值?
我将开始挖掘来源,试图弄清楚它们是如何被使用的,但如果任何人有任何洞察力或者知道更深入的文档或例子,那么我将非常感激. 干杯, 解决方法
回复可以通过方法回复发送,如下所示:
import scala.actors._ class Reverser extends Actor { def act() { Actor.loop { react { case s: String => Thread.sleep(1000); reply(s.reverse) case _ => exit() }}} } 有三种方式来明确地接受答复. >使用!!,它返回一个未来,这是一个容器类,承诺在需要的时候给你内容.它立即返回,但是如果您真的要求内容,则必须等到另一个线程完成并填满该请求. 以下是三个例子: val r = new Reverser r.start val a = (r !! "Hi") a() match { case s: String => println(s) case _ => println("Error A") } val b = r !? "Hello" b match { case s: String => println(s) case _ => println("Error B") } val c = (r !? (500,"Howdy")) c match { case Some(s: String) => println(s) case Some(_) => println("Error C") case None => println("Too slow!") } r ! None // None isn't a string,so r will stop running 如果你运行这个,你会得到 iH elloH Too slow! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |