Block在Ruby中具有特殊含义. 根据 Ruby的创建者Matz的说法,你可以将一个块看作一个无名的函数 - 通常是可以yield
编入的东西,也可以是参数.
在描述Ruby语法时,您可能会看到以下类型的disamiguation:
begin
... end
(在其他语言中称为块)有时可以简单地称为它是什么,即一个表达式(可能反过来包含其他表达式 - 表达式只是具有返回值的东西)在Ruby中.一些参考文献仍称它为a begin/end block
或a code block
,稍微增加了混淆
do
...... end
或者在Ruby中{...}
总是被称为块
例如,仔细阅读Ruby语法手册页,例如
begin
expression
end
expression
while
expression
loop
block
如需进一步阅读,请参阅:
编程Ruby
Ruby(来自其他语言)
更多,更多的文档
begin/end
严格控制流程,而不是块.
begin puts "hi" end # => "hi"
代码立即运行.如果它是一个块,则必须以某种方式调用它以使其中的代码运行,如下例所示:
def a_method; end a_method { puts "hi" } # nothing.. def a_method yield end a_method { puts "Hi!" } # => "Hi!"