在 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
我可以在 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