我正在阅读一本关于 Scala Actors 的书,但我遇到了一些语法问题。在实践中,我倾向于这样分配我的变量和函数定义:
val v: String = "blahblahblah"
def f(n: Int): Int = n+1
包括项目名称后的(返回)类型。虽然我知道这不是必需的,但我已经习惯了这种约定,并发现它使我自己更容易理解代码。话虽如此,请注意以下示例:
class Server extends Actor {
def act() = {
while (true) {
receive {
case Message(string) => reply("Good,very good.")
}
}
}
}
def sendMsg(m: Message, s: Server): Future[String] = {
s !! m
}
上面的代码在编译时产生一个错误,抱怨服务器返回了 Future[Any],而不是 Future[String]。我知道可以通过从 sendMsg 中删除返回类型来规避这个问题:
def sendMsg(m: Message,s: Server) = s !! m
但是,这不符合我的风格。有没有一种方法可以指定服务器生成的 Future 类型(而不是 Future[Any])?