Ruby和cond相关的澄清

时间:2015-05-21 21:10:35

标签: ruby

在以下代码中:

def my_while(cond, &body)
  while cond.call
    body.call
  end
end

a = 0
my_while -> { a < 3 } do
  puts a
  a += 1
end

的目的是什么?
def my_while(cond, &body)
  while cond.call
    body.call

这对循环有何影响?

1 个答案:

答案 0 :(得分:0)

my_while的参数正在被处理为块。

cond参数,即比较{ a < 3 },由函数执行,作为while中的测试条件。每次都是,第二个参数&body正在执行。

这是编写while循环的一种非常复杂的方式,但显然是用于演示传递代码块,这在元编程应用程序中非常有用。