Nur um zu klären, wenn ich mehrere assigment, parallel Zuordnung sagen, bind Destrukturierung I folgende Bedeutung Musteranpassungs gemMehrfachzuordnung von nicht-Tupeln in Scala
scala> val (x,y) = Tuple2("one",1)
x: java.lang.String = one
y: Int = 1
die "one"
zu x
und 1
zu y
zuordnet.
ich versuche
val (x,y) = "a b".split()
ich, dass scala erwarte zu tun versuchen würde, das Array mit dem Muster zu Mustern entspricht, und würde eine Laufzeit Ausnahme auslösen, wenn die Länge des Arrays nicht die Länge entsprechen würde des Musters.
Alle meine Versuche, eine Array
in eine Tuple2
zu konvertieren, waren sinnlos.
scala> Tuple2(Array(1,2):_*)
<console>:7: error: wrong number of arguments for method apply: (T1,T2)(T1, T2)
in object Tuple2
Tuple2(Array(1,2):_*)
^
scala> Tuple2(Array(1,2).toList:_*)
<console>:7: error: wrong number of arguments for method apply: (T1,T2)(T1, T2)
in object Tuple2
Tuple2(Array(1,2).toList:_*)
Gibt es eine nette Möglichkeit, Mehrfachzuweisungen mit Arrays oder Listen zu verwenden?
Dies funktioniert, weil das Objekt 'Array' die 'unapplySeq'-Methode enthält, wodurch es als Extraktor-Muster verwendbar ist. 'Array.unapplySeq (" XXX, YYY, ZZZ ".split (", ")' wird aufgerufen und gibt 'Some (ArrayBuffer (XXX, YYY, ZZZ))' zurück, was ein 'Some' ist und drei Elemente enthält Binde an 'x',' y' und 'z'. – retronym