Просто чтобы уточнить, когда я говорю множественное присвоение, параллельное назначение, деструктурирующее связывание, я имею в виду следующий камень сопоставления с образцом
scala> val (x,y) = Tuple2("one",1)
x: java.lang.String = one
y: Int = 1
, который присваивает "one"
x
и 1
y
.
Я пытался сделать
val (x,y) = "a b".split()
Я ожидал, что scala попытается сопоставить шаблон с массивом с шаблоном и выдаст исключение времени выполнения, если длина массива не будет соответствовать длине шаблона.
Все мои попытки легко конвертировать Array
в Tuple2
были тщетными.
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:_*)
Есть ли какой-нибудь удобный способ использовать множественные присваивания с массивами или списками?