如果一个人想要屈服于来电者的来电者,应如何继续?我想出了以下内容:
def method1(param)
method2(param) { |x| yield x if block_given? }
end
def method2(param)
yield(param) if block_given? # Can I yield from here
end
method1("String") { |x| puts x } # to here in a more elegant way?
答案 0 :(得分:2)
明确传递该块
def method1(param, &block)
method2(param, &block)
end
def method2(param)
yield param if block_given?
end
method1("String") { |x| puts x } # >> String
答案 1 :(得分:2)
一种方法是在第一种方法中不使用yield:
def method1(param, &block)
method2(param, &block)
end
def method2 param
yield param if block_given?
end
一元&符表示方法参数列表中的“块槽”。传递块时,可以通过将&
放在最终参数名称之前来访问传递的块。它可以以相同的方式传递给其他方法。
您可以在此处查看有关&
的大量详细信息:http://ablogaboutcode.com/2012/01/04/the-ampersand-operator-in-ruby/