Solo para aclarar, cuando digo assigment múltiple, misiones paralelo, desestructuración bind quiero decir el siguiente patrón de la gema a juegoasignación múltiple de los no-tuplas en Scala
scala> val (x,y) = Tuple2("one",1)
x: java.lang.String = one
y: Int = 1
que asigna "one"
-x
y 1
-y
.
yo estaba tratando de hacer
val (x,y) = "a b".split()
que estaba esperando que Scala intentaría patrón que coincida con la matriz con el patrón, y sería una excepción de tiempo de ejecución si la longitud de la matriz no se correspondería con la longitud del patrón.
Todos mis intentos de convertir fácilmente un Array
en un Tuple2
fueron en vano.
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:_*)
¿Hay alguna manera ordenada de usar la asignación múltiple con matrices o listas?
Esto funciona porque el objeto 'Array' incluye el método' unapplySeq', lo que lo hace utilizable como un Patrón Exractor. 'Array.unapplySeq (se llama a" XXX, YYY, ZZZ ".split (", ")', devolviendo 'Some (ArrayBuffer (XXX, YYY, ZZZ))', que es 'Some', y contiene tres elementos para enlazar a 'x',' y', y 'z'. – retronym