繁体   English   中英

脚本模式下的Scala Actor

[英]Scala Actor in script mode

我正在尝试阅读Scala编程的第9章,但发现Actor示例代码无法在脚本模式下运行。

代码很简单:

// 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 ,什么也没有发生,程序在Redford类打印任何内容之前退出。

但是,如果我使用以下代码进行编译和运行,则一切正常,它将按预期方式打印消息。

// 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.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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM