繁体   English   中英

Ruby:将Proc传递给无参数的方法

[英]Ruby: Passing a Proc to method with no parameters

所以这可行(从Code-Academy拉出):

def greeter
  yield
end

phrase = Proc.new {
  puts "Hello there!"
  }

greeter(&phrase)

我了解产量在做什么,并且了解Proc在做什么。 但是“为什么”被允许?

IE: greeter方法没有定义参数,甚至没有可选参数。 那么为什么红宝石能让我们传递一些东西呢? (在这种情况下,对代码块的引用(Proc phrase )。

我的意思是这样做很棒,但是从规则上来说,这似乎不应该被允许吗?

&phrase不是参考。 它是用于显式传递块的Ruby注释。 在这里,它将proc转换为方法调用的隐式块。 由于每个方法都接受默认块作为参数,因此您的代码有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM