Могу ли я деструктурировать (извлечь из шаблона) список 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 (выражения сопоставления с образцом)

Другие вопросы по тегам