3

我如何实现一个可以像数组一样询问的类,提供索引设置器?

像:

val k = new MyKls(size)
k(0) = 2  //<<-- I want this kind of functionality.

谢谢。

4

1 回答 1

8

听起来您正在寻找的是update方法。如果你定义了这个方法,那么 Scala 将在k(0) = 2语法中使用它。它类似于apply允许您使用k(0)访问器语法的方法。

这是一个简短的示例:

import scala.collection.mutable.Buffer

class MyKls(size: Int) {
  val buf = Buffer.fill(size)(0)
  def apply(index: Int) = buf(index)
  def update(index: Int, newValue: Int) { buf(index) = newValue }
  override def toString = buf.mkString("[", ", ", "]")
}

val k = new MyKls(5)
println(k)      // [0, 0, 0, 0, 0]
k(0) = 2
println(k)      // [2, 0, 0, 0, 0]
println(k(0))   // 2

您可以在此处找到更多详细信息。

于 2012-09-13T03:44:05.730 回答