开始吧。 。 。 结束而表示’阻止’?
temp = 98.3 begin print "Your temperature is " + temp.to_s + " Fahrenheit. " puts "I think you're okay." temp += 0.1 end while temp < 98.6
在上面的例子中,开始和结束之间的所有内容是一个块吗?
我仍然困惑什么是块。
如果你不能把它称为块,你会在开始和结束之间将那段代码称为什么? 把它称为块是否可以?
Block在Ruby中具有特殊含义。 根据 Ruby的创建者Matz的说法 ,你可以将一个块看作一个无名的函数 – 通常是可以yield
东西,也可以是参数。
在描述Ruby语法时,您可能会看到以下类型的disamiguation:
-
begin
…end
(在其他语言中称为块)有时可以简单地称为它是什么,即表达式 (可能反过来包含其他表达式 – 表达式只是具有返回值的东西)在Ruby中。 一些引用仍将其称为begin/end block
或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!"