如果我输入以下代码,
var x = ("This is driving me nuts!", 38)
x._2 = 58
我收到以下错误。
error: reassignment to val
x._2 = 58
我该如何解决这个问题?我的意思是,我怎样才能为元组的第二个元素分配一个新值。
答案 0 :(得分:6)
你不会,因为元组是不可改变的。
相反,创建一个新元组并将其分配给x
:
x = (x._1, 58)
" Scala方式"做事(最佳实践)是尽可能地保持一切不变。这包括:仅在您有充分理由时才使用var
(可变变量);否则,使用val
(不可变值)。
答案 1 :(得分:0)
这是一个类似的问题:
In Scala, how can I reassign tuple values?
正如Jesper所述,元组是不可变的,你应该创建一个新元组。我不确定它比他的答案更简洁,但是元组上也有一个复制方法,你可以像使用标准案例类一样使用它。
var tuple = (1, "test")
tuple = tuple.copy(_2 = "new")