6

我有一个 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)

编译器告诉我它需要一个分号,但找到一个等号。为什么是这样?解构时不能使用已经声明的变量吗?我在做傻事吗?

4

1 回答 1

6

模式提取需要case,valvar前缀,或者必须出现在for表达式中。因此,重新分配变量是不可能的。


Scala 语言在 §§4.1(值)、4.2(变量)、6.19(用于理解)和 8.4(模式匹配表达式)中列出了这些情况

于 2014-04-15T12:40:09.440 回答