下面的代碼片段從編程採取斯卡拉'自我'如何在斯卡拉演員中工作?
import actors.Actor
object NameResolver extends Actor {
import java.net.{InetAddress, UnknownHostException}
def act() {
react {
case (name: String, actor: Actor) =>
actor ! getIp(name)
act()
case "EXIT" =>
println("Name resolver exiting.")
// quit
case msg =>
println("Unhandled message: " + msg)
act()
}
}
def getIp(name: String): Option[InetAddress] = {
try {
Some(InetAddress.getByName(name))
} catch {
case _: UnknownHostException => None
}
}
}
首先反應內{}是什麼遞歸調用行爲()呢?它看起來像所有的情況下會失敗,它會簡單地一直到最後什麼都不做。
書中其次,他們使用以下REPL例如
NameResolver ! ("www.scala-lang.org", self)
哪裏「自我」從何而來?我試圖在主方法複製此
def main(args: Array[String]) {
NameResolver.start()
NameResolver ! ("www.scala-lang.org", Actor.self)
}
以上不工作
請您詳細說明「上述不起作用」? –