Следующий фрагмент кода взят из раздела Программирование в Scala
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
}
}
}
Во-первых, в реаги {}, что делает рекурсивный вызов act ()?Похоже, что все дела потерпят неудачу, и он просто провалится до конца, ничего не делая.
Во-вторых, в книге они используют следующий пример REPL
NameResolver ! ("www.scala-lang.org", self)
Где «сам»' родом из?Я попытался повторить это в основном методе
def main(args: Array[String]) {
NameResolver.start()
NameResolver ! ("www.scala-lang.org", Actor.self)
}
Выше не работает