开始吧...结束而表示'阻止'?

11 ruby syntax

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语法手册页,例如

begin expression end
expression while expression
loop block

如需进一步阅读,请参阅:


Aug*_*aas 9

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)