2010-12-02 10 views
1

私はScalaのProgrammingの第9章を試していますが、Actorサンプルコードはスクリプトモードでは実行できませんでした。Scala Actor in script mode

// TestActor.scala 

import scala.actors.Actor 

class Redford extends Actor { 
    def act() { 
    println("A lot of what acting is, is paying attention.") 
    } 
} 

val robert = new Redford 
robert.start 

しかし、私はscala TestActor.scalaを実行すると、何もレッドフォード、クラスの印刷は何も前に、プログラムの終了を起こりません:

コードは単純です。

コンパイルと実行に次のコードを使用すると、すべて正常に動作し、期待どおりのメッセージが出力されます。

// TestActorCompiled.scala 

import scala.actors.Actor 

class Redford extends Actor { 
    def act() { 
    println("A lot of what acting is, is paying attention.") 
    } 
} 

object Main { 
    def main (args: Array[String]) { 
    val robert = new Redford 
    robert.start 
    } 
} 

プログラムがスクリプトモードで実行されていると、俳優が何かをする前に終了するようです。

これはどうしてですか?そして、プログラムがスクリプトモードで実行されているときに、Actor.act()が実行される前に、このプログラムを終了させないようにするにはどうすればよいですか?

更新:

私が使用しているScalaの2.8.1.final

+2

うーん...第一は、2.8.0.finalで正常に動作します –

答えて

0

2.8.1.finalでテスト。奇妙なこと。それが正常に渡された

Could not connect to compilation daemon. 
Exception in thread "main" java.lang.Exception: fsc failure 
     at scala.tools.nsc.CompileSocket.fatal(CompileSocket.scala:50) 
     at scala.tools.nsc.CompileSocket.getPort(CompileSocket.scala:122) 
     at scala.tools.nsc.CompileSocket.getsock$1(CompileSocket.scala:152) 
     at scala.tools.nsc.CompileSocket.getOrCreateSocket(CompileSocket.scala:170) 
     at scala.tools.nsc.ScriptRunner$.compileWithDaemon(ScriptRunner.scala:145) 
     at scala.tools.nsc.ScriptRunner$.compile$1(ScriptRunner.scala:197) 
     at scala.tools.nsc.ScriptRunner$.withCompiledScript(ScriptRunner.scala:225) 
     at scala.tools.nsc.ScriptRunner$.runScript(ScriptRunner.scala:265) 
     at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:91) 
     at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) 

二度目::私が最初に実行するときは、それが失敗しました

>scala TestActor.scala 
A lot of what acting is, is paying attention.