「慣用」Scala中表達此功能的一些想法是什麼?或者更確切地說,有沒有一種方法可以在不犧牲可讀性的情況下去除局部變量?強制性代碼的習慣性Scala解決方案
def solve(threshold: Int)(f: Int => Int): Int = {
var sum = 0
var curr = 0
while(sum < threshold) {
sum += f(curr)
curr += 1
}
curr
}
我能想出的唯一的東西就是這個,但是在我看來,它更長,更不可讀。
def solve2(threshold: Int)(f: Int => Int): Int = {
val resultIterator = Iterator.iterate (0, 0) { case (curr, sum) =>
(curr + 1, sum + f(curr))
}
(resultIterator find (_._2 >= threshold)).get._1
}
這是很難決定要_correct_,因爲所有的人都很好,所以我挑,似乎最直觀的一個哪一個我 – 2011-12-31 17:49:57
@丹伯頓的解決方案給了我工具箱的最新技巧。 – 2011-12-31 18:06:58