尤金·布尔马科( Eugene Burmako):
在Akka中,演员通常使用非类型化的
tell方法进行交互。由于参与者能够相互发送任意类型的消息,类型信息在接收端丢失,通常只能使用模式匹配恢复,而松散类型则保证。
在这里,他指的是什么保证,为什么模式匹配削弱了它们?
发布于 2016-10-25 09:28:19
Spot的回答告诉你失去了什么保证,但是“为什么模式匹配削弱了它们”的答案是它没有,你稍微误解了这个句子。而不是
模式匹配,松散类型保证
把它当作
类型信息在接收端丢失,通常只能通过模式匹配恢复,松散类型保证。
“而且通常只能恢复.”是一个圆括号。
发布于 2016-10-25 09:05:56
下面是一个简单的akka示例(来自:这里)
import akka.actor._
class HelloActor(myName: String) extends Actor {
def receive = {
case "hello" => println("hello from %s".format(myName))
case _ => println("'huh?', said %s".format(myName))
}
}
object Main extends App {
val system = ActorSystem("HelloSystem")
val helloActor = system.actorOf(Props(new HelloActor("Fred")), name ="helloactor")
helloActor ! "hello"
helloActor ! "buenos dias"
}HelloActor中的接收函数采用任意类型。(从技术上讲,这是从任何部门到单位的部分职能)。这意味着要理解它的类型,我们需要模式匹配。我可以发送一个Int到HelloActor,编译器不会阻止我。如果我有一个接受字符串的正常函数,那么编译器就会检测到这一点。我相信这句话所指的是缺乏类型安全。
有打字的阿克卡演员,但我从来没有使用过他们,我不知道他们需要什么。
https://stackoverflow.com/questions/40235656
复制相似问题