1
我嘗試做以下...如何調用作爲參數傳遞的列表在斯卡拉
我定義爲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!")
}
}
}
變化是什麼說法?你有'xs',你想用'RefInt'(s)的'List'做什麼? –
這是沒有指定的,我所要做的就是改變參數,使其對調用者可見。 有這個測試代碼,我運行它只是檢查xs是否被改變,如果沒有,它會引發runtimeexception錯誤。 –
屬性(「EX05 - refint5」,EX(5)){ val rand = scala.util.Random val xs:List [Int] =(1 to 5).toList.map(x => rand.nextInt (y,y) var changed = false ((x,r)< - xs.zip(ys)) )){ 如果(X!= r.get){ 改變=真 }} 如果 (!改變){ 拋出新的RuntimeException( 「XS是不變的!」) }} } 有時 –