Я украл свой заголовок из этого сообщения: Выполняет функцию до тех пор, пока она не вернет ноль, собирая ее значения в список
Этот вопрос относится к Lisp и, откровенно говоря, , я ничего не понял. Однако я думаю, что его вопрос, переведенный на Ruby, является моим собственным:
Как лучше всего создать условный цикл в [Ruby], который выполняет функцию до тех пор, пока она не вернет NIL, и в это время она собирает возвращенные значений в список?
Мой нынешний неуклюжий подход таков:
def foo
ret = Array.new
x = func() # parenthesis for clarity (I'm not a native Ruby coder...)
until x.nil?
ret << x
x = func()
end
ret
end
Этот фрагмент кода будет делать то, что я хочу ... но я знаю, что есть более чистый, более идиоматичный подход Ruby ... верно?