Jakie są pomysły na wyrażanie tej funkcji w Scence "idiomatycznej". A dokładniej, czy istnieje sposób na usunięcie lokalnych więzów bez utraty czytelności?Rozwiązanie Idiomatic Scala do imperatywnego kodu
def solve(threshold: Int)(f: Int => Int): Int = {
var sum = 0
var curr = 0
while(sum < threshold) {
sum += f(curr)
curr += 1
}
curr
}
Jedyne, co mogłem wymyślić, to, ale jest dłuższa i mniej czytelna według mnie.
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
}
Trudno było zdecydować, który z nich zrobić _correct_ ponieważ wszystkie były dobre, więc wybrałem ten, który wydawał się najbardziej intuicyjna me –
@Dan Rozwiązanie Burtona dało mi najwięcej nowych sztuczek dla skrzynki narzędziowej. –