Ich (versehentlich) stieß auf ein bisschen Pattern-Matching-Syntax, die ich nicht erwarten zu kompilieren und jetzt kann nicht herausfinden.Scala unapplySeq Extractor Syntax
Es scheint im Zusammenhang mit unapplySeq
.
Notiere den case x List(_,_)
Teil in diesem einfachen Beispiel:
val xs = List(1, 2, 3) //> xs : List[Int] = List(1, 2, 3)
xs match {
case x List (_, _) => "yes"
case _ => "no"
} //> res0: String = yes
Ich bin zu :
oder @
in Mustererkennung Syntax verwendet, aber ich bin verwirrt darüber. Wie funktioniert diese Syntax und was (wenn überhaupt) ist ihre Beziehung zu unapplySeq
?
Beispielcode ausgeführt in Scala 2.11.6
Wo erklären Sie, wie 'case List (x, _, _) =>" yes "' äquivalent zu "case x List (_, _) =>" yes "'? –
In der Infix-Operatornotation befindet sich die Methode zwischen dem Objekt und dem Parameter (oder den Parametern). – bjfletcher
Ich dachte Infix Notation nur für Funktionen mit 2 Argumente? Mit Blick auf die Quelle ist 'List.unapplySeq' definiert' def unapplySeq [A] (x: CC [A]): Einige [CC [A]] = Einige (x) ' –