我正在尝试了解块和过程,我觉得这应该是可行的,但到目前为止我还没有成功。
我想要什么:
def main_action(generic_variable, block)
generic_variable += 1 # I do more interesting stuff than this in my version
yield(generic_variable)
end
main_action(3, {|num| num + 5 })
或类似的东西。
我找到的最接近的是http://mudge.name/2011/01/26/passing-blocks-in-ruby-without-block.html这似乎需要创建一个传递方法来发送块:
class Monkey
# Monkey.tell_ape { "ook!" }
# ape: ook!
# => nil
def self.tell_ape(&block)
tell("ape", &block)
end
def self.tell(name, &block)
puts "#{name}: #{block.call}"
end
end
如果我使用在我的代码中设置的相同传递方法,我可以让它工作,但它似乎是不必要的代码。我试着打电话Monkey.tell("ape", { "ook!" })
直接打电话,但得到syntax error, unexpected '}', expecting tASSOC
是否可以在一次调用中将变量和块(或proc,我不挑剔)发送到函数?另外,如果你有时间,上面发生了什么?为什么那行不通?