4
我只是在使用Odersky等人的「Programming in Scala」學習Scala。
在關於演員的章節中,我遇到了無法解釋的行爲。更具體地說試圖將消息發送到「自我」時(見example)
進入Scala的外殼:
scala> import scala.actors.Actor._
import scala.actors.Actor._
scala > self ! "Hello"
scala > self.receive { case x => x }
但最後一行不與預期的答案「迴歸」:
resX:Any = hello
在需要做Ctrl-C來獲得背殼接受我的輸入和返回的信息是:
Execution interrupted by signal.
scala> self.receive {case x => x}
// She's gone rogue, captain! Have to take her out!
// Calling Thread.stop on runaway Thread[Thread-54,5,main] with offending code:
// scala> self.receive {case x => x}
但以下的實際工作:
self ! "Hello" ; self.receive { case x => x }
我的問題是:
發生了什麼事?爲什麼第一個例子不工作,第二個例子呢?!? 我想理解shell的行爲,因爲本書的作者聲稱使用self作爲actor的答案的接收者是一個很好的調試技術。
啊哈,這很合理!謝謝@亞歷克西。 – nanitous 2011-12-14 13:16:30