在 Scala 中使用表达式 a(1) = 10 而不是 a.set(1,10)

Using an expression a(1) = 10 instead of a.set(1,10) in Scala

我可以在 Scala 中使用 apply 来重载 () 运算符。

class A {
    val arr = Array[Int](1,2,3,4,5)
    def apply(i:Int) = {
        arr(i)
    }
}
object Main extends App {
    val a = new A
    println(a(0))
}

我设置值的时候,可以加上set方法

def set(i:Int, value:Int) = {arr(i) = value}
...
arr.set(3, 10)

Scala 是否允许 arr(3) = 10 等更好的语法糖来获得相同的结果?

您可以定义 update 方法:

scala> class A {
     |     val arr = Array[Int](1,2,3,4,5)
     |     def apply(i: Int) = {
     |         arr(i)
     |     }
     |     def update(i: Int, x: Int) {
     |         arr(i) = x
     |     }
     | }
defined class A

scala> val a = new A
a: A = A@7d117aef

scala> a(0)
res0: Int = 1

scala> a(0) = 42

scala> a(0)
res2: Int = 42