重写代码重复我有这样的代码:斯卡拉:带密封盖
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