2014-04-15 10 views
4

我有一個Scala列表。我可以解構列表到一些變量這樣的:我可以解構(模式提取)一個Scala列表到一個重用var嗎?

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) 

編譯器告訴我,這預期分號,但找到了一個等號。爲什麼是這樣? 解構時不可能使用已經聲明的變量嗎?我在做一些愚蠢的事情嗎?

+0

一個:: B ::尾 - 創建列表(對象)。像'3'::'5'::'3'。它是對象 - 不可變。所以你不能重用變量 - 用來創建這個列表。 –

+0

相關:http://stackoverflow.com/q/2776651/298389 –

回答

4

模式提取需要case,valvar前綴或必須出現在for表達式中。因此,重新分配變量是不可能的。


Scala語言列出§§4.1(值)這些情況下,4.2(變量),6.19(換推導)和8.4(模式匹配表達式)

+1

這將是一個更好的答案與參考語言規範。 –

+0

我想那是一個「否」。雖然澄清,我可以重新分配變量,只是不使用其他模式提取。 –

+0

一個你如何做類似的例子會有幫助。 –

相關問題