我正在尝试做以下事情......
我有一个定义为RefInt
的类和一个方法refInt5
,它应该对List
的实例进行RefInt
个引用。
我需要以这样的方式更改参数,以便调用者可以看到它。
object argpass {
class RefInt (initial : Int) {
private var n : Int = initial
def get () : Int = n
def set (m : Int) : Unit = { n = m }
}
def refint5 (xs : List[RefInt]) : Unit = {
// What am I missing to modify RefInt(s)?
}
}
测试代码我必须看看参数是否已经改变。
property ("EX05 - refint5", EX (5)) {
val rand = scala.util.Random
val xs : List[Int] = (1 to 5).toList.map (x => rand.nextInt (100))
val ys : List[RefInt] = xs.map (x => new RefInt (x))
refint5 (ys)
var changed = false
for ((x, r) <- xs.zip (ys)) {
if (x != r.get) {
changed = true
}
}
if (!changed) {
throw new RuntimeException ("xs is unchanged!")
}
}
}
答案 0 :(得分:0)
一种可能的选择:迭代xs
,为每个元素调用set
- 获取当前值 - 添加1.
def refint5(xs: List[RefInt]): Unit = {
xs.foreach { x => x.set(x.get + 1) }
}