我很难找到解释如何使用!?
运算符向Scala中的actor发送阻止消息的示例,博客等。当我(天真地)尝试简单地使用它时,期望它阻塞直到演员已经对该消息进行操作,该线程就会阻塞。例如
scala> :paste
// Entering paste mode (ctrl-D to finish)
class A extends Actor {
def act {
loop {
react {
case 5 => println("hello")
}
}
}
}
// Exiting paste mode, now interpreting.
defined class A
scala> val a = new A
a: A = A@10115870
scala> a.start
res5: scala.actors.Actor = A@10115870
scala> a !? 5
hello
Execution interrupted by signal. // I just pressed Ctrl+C
我在我的Scala编程版中找不到任何内容,我可能只是愚蠢,但是有人能指出我正确的方向吗?
从我可以从API文档中收集到的内容,我需要阻塞actor将消息发送回调用者?但是呼叫者如何以及在何处收到此消息?任何链接到示例等将不胜感激。不幸的是,谷歌搜索!?
的帮助不大。
答案 0 :(得分:4)
发件人收到邮件作为!?
的返回值。所以
scala> :paste
// Entering paste mode (ctrl-D to finish)
import scala.actors.Actor._
class A extends Actor {
def act {
loop {
react {
case 5 => println("hello"); reply(0)
}
}
}
}
// Exiting paste mode, now interpreting.
defined class A
scala> val a = new A
a: A = A@10115870
scala> a.start
res5: scala.actors.Actor = A@10115870
scala> a !? 5
hello
res6: Any = 0