我明白我可以写
myArray(index) = newValue
更新数组。但是,我不明白这在内部是如何运作的。我从这里的另一个问题了解到 =
通常不是 Scala 中的方法调用。我还知道括号是在对象上调用 apply()
方法的简写,因此我假设 myArray(index)
表示 myArray.apply(index)
.
但是如何为刚刚从方法调用返回的内容赋值呢?
最佳答案
你说得对
myArray(index)
是语法糖
myArray.apply(index)
但是,添加带有 =
运算符的赋值完全改变了含义:
myArray(index) = newValue
是update
方法的特殊语法:
myArray.update(index, newValue)
这不仅适用于数组;您可以自己使用它。事实上,Scala 集合框架中的许多类都使用了这种语法糖。例如,scala.collection.mutable.Map#update(A,B)
也可以这样做。
class MyClass(var i: Int)
{
def update(i: Int, j: Int) = { this.i = i + j }
}
var my = new MyClass(1)
my(1) = 2
println(my.i) // prints 3
关于arrays - Scala 中如何使用 = 更新数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34976630/