2009-03-13 5 views
10
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 

上記の例では、開始と終了の間のすべてがブロックですか?が始まります。 。 。終わりに 'ブロック'を意味する?

私はまだブロックが何であるか混乱しています。

ブロックを呼び出すことができない場合は、開始点と終了点の間にそのコードの塊を何と呼びますか?それをチャンクと呼ぶのはいいですか?

答えて

19

ブロックはRubyでは特別な意味を持ちます。 According to Matz、Rubyの作成者では、ブロックを無名関数として見ることができます。通常はyieldと入力でき、パラメータも取ることができます。

Rubyの構文を記述するときは、disamiguation次のようなが表示されることがあります

  • begin ... endの言語でブロックと呼ばれるもの)単にそれが何であるかと呼ぶことができます、すなわちexpression(これは他の表現を含むことがあります - 表現は単に戻り値を持つものです)をRubyで使用します。いくつかの参照は、まだ、the Ruby syntax man pageを熟読
  • do ... endまたは{...}は常に例についてはRubyの
  • block

と呼ぶことにする混乱を多少追加し、begin/end block、またはcode blockそれを呼び出します、例えば

beginexpressionend
expressionwhileexpression
loopblock

さらに読み取りについて、以下を参照してください。

8

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!" 
関連する問題