Возврат и повторение коллекции с использованием yield в scala

У меня есть классы DateTime и TimeSpan в Scala (предположим, что операторы <и + работают должным образом) . Я пытаюсь определить функцию «диапазона», которая требует времени начала / остановки и промежутка времени для пошагового выполнения. В C # я бы сделал это с yield, и я думаю, что смогу сделать то же самое в Scala ... за исключением того, что я получаю странную ошибку.

В строке 'yield t' я получаю «Незаконное начало оператора».

  def dateRange(from : DateTime, to : DateTime, step : TimeSpan) =
  {
      // not sure what the list'y way of doing this is
    var t = from

    while(t < to)
    {
      yield t; // error: illegal start of statement
      t = t + step
    }
  }

Глядя на этот код, меня интересуют две вещи: 1) что я сделал не так? 2) код в том виде, в котором он был написан, очень важен (используется переменная t и т. Д.) . Какой более функциональный и достаточно быстрый способ сделать это в Scala?

Спасибо!

5
задан themel 28 October 2011 в 13:03
поделиться