特别是在红宝石中,我想知道我是否能够做某事。
假设我有一个while循环,它会在不再满足条件之前执行某些操作。 我将需要同样的while循环用于多种目的,但条件每次都在变化。因此,我希望将其更改为可重用性的功能。
我可以通过(我正在检查的条件)作为参数吗?
类似的东西:
def wait(condition)
while condition
do something
end
end
为了澄清,我想传递条件(或语句)本身,而不是在运行函数时对语句的评估。 另外我很确定我给的是错误的名字(陈述/条件/评价)所以如果我弄错了请纠正我。
答案 0 :(得分:4)
你可以用块来做到这一点:
def wait(&condition)
while condition.call()
# do something
end
end
...
wait {true} # never returns
有关有用的信息,请参阅http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/。
答案 1 :(得分:2)
def print_while(value, &condition)
while condition.call
print value
end
end
或:
def wait(value)
while yield
print value
end
end
致电:
wait(2) { true }