如何为scala中的元组中的Integer赋值?

pyt*_*nic 2 scala

如果我输入以下代码,

var x = ("This is driving me nuts!", 38)
x._2 = 58
Run Code Online (Sandbox Code Playgroud)

我收到以下错误.

error: reassignment to val
         x._2 = 58
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?我的意思是,我怎么能够为元组的第二个元素分配一个新值.

Jes*_*per 6

你没有,因为元组是不可变的.

相反,创建一个新元组并将其分配给x:

x = (x._1, 58)
Run Code Online (Sandbox Code Playgroud)

做事的"Scala方式"(最佳实践)是尽可能地保持一切不变.这包括:var只有在你有充分理由时才使用(可变变量); 否则,使用val(不可变值).

  • 或`x.copy(_2 = 58)`.如果您的元组包含2个以上的元素,则更实用 (3认同)