2011-11-09 2 views
0

프로그래밍에서 스칼라 에디션 1 30.3 (p589)을 따르고 있습니다. 여기에서는 현재 스레드가 repl의 액터를 디버깅하는 액터로 'self'를 사용할 수 있다고 설명합니다. 그러나 Scala 2.9.1을 따라 가면 수신시 스레드가 중단됩니다.셀프 배우가 답장을 보내다

$ scala -unchecked -deprecation 
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_26). 
Type in expressions to have them evaluated. 
Type :help for more information. 

scala> import scala.actors.Actor._ 
import scala.actors.Actor._ 

scala> self ! "hi" 

scala> self.receive { case a => a } 
[hangs - should be "res1: Any = hi"] 

나는 스칼라 2.7.7로 확인하고 예상대로 작동합니다. Scala 2.9.1에서이 작업을 수행하려면 어떻게해야합니까?

답변

5

2.9.1 REPL은 각 입력마다 differentThread를 실행하기 때문입니다.

https://gist.github.com/1324774

각 입력 같은 스레드가 아닌, "-Yrepl 동기화"옵션을 사용하시기 바랍니다 참조하십시오.

https://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_9_1_final/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala#L149

+0

고마워요! 하나의 입력 줄에 보내기와 받기를하면 (블록에 있든 없든간에) 작동합니다. REPL 옵션은 매우 훌륭합니다. –