Scala - czy klauzula „for-yield” nie daje niczego dla jakiegoś warunku?

W języku Scala chcę napisać funkcję, która daje nieparzyste liczby w podanym zakresie. Funkcja drukuje dziennik podczas iteracji liczb parzystych. Pierwsza wersja funkcji to:

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
}

Jeśli pomijam dzienniki drukowania, implementacja staje się bardzo prosta:

def getOddsWithoutPrint(N: Int) =
  for (n <- 0 until N if (n % 2 == 1)) yield n

Nie chcę jednak przegapić części logowania. Jak przepisać pierwszą wersję bardziej kompaktowo? Byłoby wspaniale, gdyby można było go przepisać w podobny sposób:

def IWantToDoSomethingSimilar(N: Int) =
  for (n <- 0 until N) if (n % 2 == 1) yield n else println("skip even number " + n)

questionAnswers(4)

yourAnswerToTheQuestion