我正在尝试做类似以下的事情
var tuple = (1, "test")
tuple._2 = "new"
Run Code Online (Sandbox Code Playgroud)
但是这不会编译它抱怨val
Rex*_*err 43
您无法重新分配元组值.它们是故意不变的:一旦你创建了一个元组,你就可以确信它永远不会改变.这对于编写正确的代码非常有用!
但是,如果你想要一个不同的元组怎么办?这就是复制方法的用武之地:
val tuple = (1, "test")
val another = tuple.copy(_2 = "new")
Run Code Online (Sandbox Code Playgroud)
或者如果你真的想使用var来包含元组:
var tuple = (1, "test")
tuple = tuple.copy(_2 = "new")
Run Code Online (Sandbox Code Playgroud)
或者,如果您确实希望单独更改值,则可以使用case类(可能使用隐式转换,以便在需要时获得元组):
case class Doublet[A,B](var _1: A, var _2: B) {}
implicit def doublet_to_tuple[A,B](db: Doublet[A,B]) = (db._1, db._2)
val doublet = Doublet(1, "test")
doublet._2 = "new"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9973 次 |
| 最近记录: |