第699页的演员示例;用Scala编程;抛出太多参数错误
书中的代码:第699页的演员示例;用Scala编程;抛出太多参数错误,scala,Scala,书中的代码: object NameResolver extends Actor{ import java.net.{InetAddress, UnknownHostException} def act(){ react{ case(name:String, actor:Actor) => actor ! getIp(name) act() ca
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 is exiting.")//quit
case msg =>
println("Unhandled message: "+msg)
act()
}
}
def getIp(name:String):Option[InetAddress]={
try{
Some(InetAddress.getByName(name))
} catch {
case _ : UnknownHostException => None
}
}
}
翻译行:
NameResolver ! ("http://stackoverflow.com", self)
但我有一个错误:
scala> NameResolver ! ("http://stackoverflow.com", self)
<console>:8: error: too many arguments for method !: (msg: Any)Unit
NameResolver ! ("http://stackoverflow.com", self)
scala>namesolver!("http://stackoverflow.com“,自我)
:8:错误:方法的参数太多!:(味精:任何)单位
名字分解器!("http://stackoverflow.com“,自我)
根据这本书,它应该是有效的。我从书中复制的代码中是否存在导致异常的错误?您试图传递一个元组,但编译器认为您正在调用
代码>包含两个参数。因为有时可以省略括号,所以元组有时需要额外的括号,如((1,2))
。这可能会引起混乱。试试namesolver!(("http://stackoverflow.com“,self))
或使用箭头语法创建元组:1->2