В языке Scala я хочу написать функцию, которая дает нечетные числа в заданном диапазоне. Функция печатает некоторый журнал при повторении четных чисел. Первая версия функции:
def getOdds(N: Int): Traversable[Int] = {
val list = new mutable.MutableList[Int]
for (n <- 0 until N) {
if (n % 2 == 1) {
list += n
} else {
println("skip even number " + n)
}
}
return list
}
Если я опускаю журналы печати, реализация становится очень простой:
def getOddsWithoutPrint(N: Int) =
for (n <- 0 until N if (n % 2 == 1)) yield n
Однако я не хочу пропускать часть регистрации. Как переписать первую версию более компактно? Было бы здорово, если бы его можно было переписать аналогично этому:
def IWantToDoSomethingSimilar(N: Int) =
for (n <- 0 until N) if (n % 2 == 1) yield n else println("skip even number " + n)