【发布时间】:2011-10-16 17:42:15
【问题描述】:
我从这篇文章中窃取了我的头衔:Executes a function until it returns a nil, collecting its values into a list
这个问题是关于 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
这段代码 sn-p 会做我想做的事……但我知道有一种更简洁、更惯用的 Ruby 方法……对吗?
【问题讨论】:
-
如果您能提供一个使用这种方法的真实案例,我会很感兴趣。
-
@Phrogz 这对我来说听起来像是一个可迭代的生成器,它是一种常见的设计模式,尤其是在函数式程序中。
标签: ruby list while-loop return-value null