arrays - Scala 中如何使用 = 更新数组?

标签 arrays scala

我明白我可以写

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/

相关文章:

python - 如何调整 Numpy 数组的大小以添加/替换行,其组合由数组每行中的值确定

javascript - Array.from(Object) 和 [...Object] 有什么区别?

scala - 根据 Slick 中的 Id 选择单行

scala - Akka-Http Websockets : How to Send consumers the same stream of data

java - Scala 中的协方差

java - 如何从文本文件中读取并存储到java中的数组中

java - 如何像 SQL 中的 ORDER BY 子句一样操作数组?

javascript - 优化嵌套循环以从数组中过滤包含特定值的对象

scala - Scala 有没有办法在不使用 if 嵌套的情况下转义多个 return 语句

scala - sbt-assembly:如何排除 src/main/resources 中的配置文件