2016-10-25 1 views
1

Aus a paper von Eugene Burmako:Scala - "Mustererkennung führt zu gelockerten Typengarantien"?

In Akka, a [...], Schauspieler interagieren typischerweise eine nicht typisierte tell Methode. Da die Aktoren in der Lage sind, Nachrichten beliebiger Art zu senden, gehen Informationen vom Typ typ auf der Empfängerseite verloren und können normalerweise nur unter Verwendung der Mustererkennung , Lockerungsartengarantien, wiederhergestellt werden.

Auf welche Garantien bezieht er sich hier, und warum schwächt der Mustervergleich sie?

Antwort

3

Hier ist ein einfaches Beispiel akka (aus: 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" 
} 

Die Empfangsfunktion im HelloActor nimmt einen beliebigen Typs. (Technisch ist es eine Teilfunktion von Any to Unit). Um den Typ zu verstehen, müssen wir eine Musterübereinstimmung haben. Ich könnte einen Int an den HelloActor schicken und der Compiler würde mich nicht stoppen. Wenn ich einfach eine normale Funktion hätte, die einen String aufnimmt, würde der Compiler das erkennen. Dieser Mangel an Typensicherheit ist das, worauf sich das Zitat bezieht.

Es gibt typisierte Akka Schauspieler, aber ich habe sie nie benutzt und bin mir nicht sicher, was sie beinhalten.

4

Die Antwort eines Spoty Spots sagt Ihnen, welche Garantien verloren gegangen sind, aber die Antwort auf "Warum Pattern Pattern Matching sie schwächt" lautet, dass dies nicht der Fall ist. Du hast den Satz leicht falsch pariert. Statt

Mustervergleich, Lockern Art garantiert

es als

gelesen werden

Typinformationen auf der Empfängerseite verloren, und können in der Regel nur Muster unter Verwendung zurückgewonnen werden passend, lockerungsart garantiert

"und kann in der Regel nur wiederhergestellt werden ..." ist ein parenthetical.

Verwandte Themen