在对a paper由Eugene Burmako:Scala - “模式匹配导致松散类型保证”?
在阿卡,一个[...],演员通常交互使用无类型
tell
方法。由于参与者能够相互发送任意类型的消息,因此类型信息在接收方丢失,并且通常只能使用模式匹配进行恢复,松动类型保证。
他在这里提到了什么保证,为什么模式匹配会削弱它们?
在对a paper由Eugene Burmako:Scala - “模式匹配导致松散类型保证”?
在阿卡,一个[...],演员通常交互使用无类型
tell
方法。由于参与者能够相互发送任意类型的消息,因此类型信息在接收方丢失,并且通常只能使用模式匹配进行恢复,松动类型保证。
他在这里提到了什么保证,为什么模式匹配会削弱它们?
下面是一个简单的例子阿卡(来自:here)
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,编译器不会阻止我。如果我只是有一个正常的函数接受了一个字符串,那么编译器会检测到它。这种缺乏类型安全性是我认为这句话是指的。
有打字的akka演员,但我从来没有使用过他们,我不知道他们带来了什么。
Spoty Spot的答案告诉你失去了什么保证,但“为什么模式匹配会削弱它们”的答案是它没有。你稍微误解了这句话。代替
图案匹配,松动型保证
读它作为
类型信息丢失在接收机侧,并且可以典型地仅使用图案被回收配套,松动型保证
“通常只能恢复......”是parenthetical。