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
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,开始和结束之间的所有内容都是块吗?
我仍然困惑什么是块.
如果你不能把它称为块,你会在开始和结束之间将那段代码称为什么?把它称为块是否可以?
vla*_*adr 19
Block在Ruby中具有特殊含义. 根据 Ruby的创建者Matz的说法,你可以将一个块看作一个无名的函数 - 通常是可以yield编入的东西,也可以是参数.
在描述Ruby语法时,您可能会看到以下类型的disamiguation:
begin... end(在其他语言中称为块)有时可以简单地称为它是什么,即一个表达式(可能反过来包含其他表达式 - 表达式只是具有返回值的东西)在Ruby中.一些参考文献仍称它为a begin/end block或a code block,稍微增加了混淆do...... end或者在Ruby中{...}总是被称为块例如,仔细阅读Ruby语法手册页,例如
beginexpressionend
expressionwhileexpression
loopblock
如需进一步阅读,请参阅:
begin/end 严格控制流程,而不是块.
begin
puts "hi"
end
# => "hi"
Run Code Online (Sandbox Code Playgroud)
代码立即运行.如果它是一个块,则必须以某种方式调用它以使其中的代码运行,如下例所示:
def a_method; end
a_method { puts "hi" }
# nothing..
def a_method
yield
end
a_method { puts "Hi!" }
# => "Hi!"
Run Code Online (Sandbox Code Playgroud)