Могу ли я деструктурировать (извлечь из шаблона) список Scala в повторно используемый var?
У меня есть список Scala. Я могу разложить список на несколько переменных таким образом:
var a :: b :: tail = myList
a should be ("A1")
b should be ("B1")
tail should be ('empty)
Тем не менее, я не могу использовать те же переменные для другой деструктуризации:
a :: b :: tail = anotherList
a should be ("A2")
b should be ("B2")
tail should be ('empty)
Компилятор сообщает, что ожидал точку с запятой, но нашел знак равенства. Почему это? Разве нельзя использовать уже объявленные переменные при деструктурировании? Я делаю что-то глупое?
1 ответ
Решение
Для извлечения шаблона требуется case
, val
или же var
префикс или должен встречаться в пределах for
выражение. Поэтому переназначение переменных невозможно.
Язык Scala перечисляет эти случаи в §§4.1 (значения), 4.2 (переменные), 6.19 (для-понимания) и 8.4 (выражения сопоставления с образцом)