У меня есть класс DateTime и TimeSpan в Scala (предположим, что операторы ‹ и + работают как надо). Я пытаюсь определить функцию «диапазона», которая принимает время начала/остановки и временной интервал для пошагового выполнения. В C# я бы сделал это с выходом, и я думаю, что смогу сделать то же самое в Scala... за исключением того, что я получаю странную ошибку.
В строке «выход 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
}
}
Глядя на этот код, мне интересно 2 вещи: 1) что я сделал не так? 2) написанный код очень императивен (использует var t и т. д.). Какой более функциональный способ сделать это в Scala достаточно быстро?
Спасибо!
yield
в Scala не имеет ничего общего сyield
в C# (или Python). Более того, у Scala нет ему эквивалента — поищите множество вопросов о Scala, Python, yield и генераторах. И, конечно же, поищите вопросы о том, чем на самом деле занимаетсяyield
. - person Daniel C. Sobral   schedule 29.10.2011