Właśnie w celu wyjaśnienia, kiedy mówię wielokrotnego assigment, przyporządkowanie równoległego, demontażu struktury wiążą Znaczy następujący wzór pasujący gemwielokrotne przypisanie niebędących krotek w Scala
scala> val (x,y) = Tuple2("one",1)
x: java.lang.String = one
y: Int = 1
który przypisuje "one"
do x
i 1
do y
.
starałem się zrobić
val (x,y) = "a b".split()
się spodziewałem, że scala będzie próbował dopasować wzór tablicy z wzorca i rzucał wyjątek czasu wykonywania, jeśli długość tablicy nie będzie pasować do długości wzoru.
Wszystkie moje próby łatwego przekonwertowania Array
na Tuple2
były daremne.
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:_*)
Czy istnieje jakiś sposób na wykorzystanie wielu zadań z tablicami lub listami?
Działa to, ponieważ obiekt 'Array' zawiera metodę' unapplySeq', dzięki czemu może być używany jako Pattern Exractor. 'Array.unapplySeq (" XXX, YYY, ZZZ ".split (", ")' jest wywoływane, zwracając 'Some (ArrayBuffer (XXX, YYY, ZZZ))', który jest 'Some' i zawiera trzy elementy do połącz z 'x',' y' i 'z'. – retronym