重寫代碼重複我有這樣的代碼:斯卡拉:帶密封蓋
val arr: Array[Int] = ...
val largestIndex = {
var i = arr.length-2
while (arr(i) > arr(i+1)) i -= 1
i
}
val smallestIndex = {
var k = arr.length-1
while (arr(largestIndex) > arr(k)) k -= 1
k
}
但有得多代碼重複。我試圖用閉包重寫這個,但是我失敗了。我試過這樣的事情:
def index(sub: Int, f: => Boolean): Int = {
var i = arr.length-sub
while (f) i -= 1
i
}
val largest = index(2, i => arr(i) > arr(i+1))
val smallest = index(1, i => arr(largest) > arr(i))
問題是我不能在閉包中使用方法index()的參數i。有沒有辦法避免這個問題?
謝謝!這工作正常。 – sschaef 2010-10-04 08:58:48