Какие есть идеи для выражения этой функции в «идиоматической» 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
}