我可以将Scala列表解构(模式提取)到重用的var中吗?

Pet*_*ott 6 scala destructuring

我有一个Scala列表.我可以将列表解构为一些变量:

var a :: b :: tail = myList
a should be ("A1")
b should be ("B1")
tail should be ('empty)
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法将相同的变量重用于另一个解构:

a :: b :: tail = anotherList
a should be ("A2")
b should be ("B2")
tail should be ('empty)
Run Code Online (Sandbox Code Playgroud)

编译器告诉我,它期望一个分号,但发现了一个等号.为什么是这样?在解构时是不可能使用已经声明的变量?我做了些蠢事吗?

0__*_*0__ 6

图案提取需要case,val或var前缀或内必须发生for表达.因此,无法重新分配变量.


Scala语言在§§4.1(值),4.2(变量),6.19(for-comprehensions)和8.4(模式匹配表达式)中列出了这些情况

  • 通过引用语言规范,这将是一个更好的答案. (2认同)