> Ruby – ブロック,yield,ブロックとメソッド,BEGINブロックとENDブロック,~RUBY入門〜RUBYTUTORIAL〜 – ネットワークエンジニアチュートリアル

Ruby – ブロック,yield,ブロックとメソッド,BEGINブロックとENDブロック,~RUBY入門〜RUBYTUTORIAL〜

スポンサーリンク

無料でプログラマへ!30歳までなら無料でプログラミング学校に通うことが出来ます。下の画像をクリックして無料相談会でGO!

Ruby – ブロック

RUBYのブロックとは何か?


ブロックとは、簡単にいうと「引数のかたまり」という意味合いになります。ブロックの、do~end までの範囲すべてが引数ということになりますね。

 block do | i |

  x = i * 2 #青がブロックってことですね。

  p x

end

または、{ } で囲まれた範囲もブロックで、この範囲すべてが引数です。

0
2
4

 

構文


block_name{
   statement1
   statement2
   ..........
}

言葉でまとめると?


ブロックとはコードの塊である
  • ブロックに名前を割り当てることができる(構文のNAMEのとこ)。
  • ブロック内のコードは中括弧({})で囲まれテイル
  • ブロックは、ブロックと同じ名前の関数から常に呼び出されます。これは、名前testのブロックがある場合、このブロックを呼び出すために関数testを使用することを意味します。
  • 今回はyieldステートメントを使用してブロックを呼び出します。

yieldステートメント


yield文の例を見てみましょう。

#!/usr/bin/ruby

def test
   puts "あなたはメソッドの中にいます"
   yield
   puts "あなたはメソッドの中にまた入りました"
   yield
end
test {puts "あなたはブロックの中にいます"}

これにより、次の結果が生成されます。

あなたはメソッドの中にいます
あなたはブロックの中にいます
あなたはメソッドの中にまた入りました
あなたはブロックの中にいます

また、yield文でパラメータを渡すこともできます。

#!/usr/bin/ruby

def test
   yield 5
   puts "あなたはメソッドテストの最中です"
   yield 100
end
test {|i| puts "あなたはブロックテストを #{i}しています"}

これにより、次の結果が生成されます。

あなたはブロックテストを5しています
あなたはメソッドテストの最中です
あなたはブロックテストを100しています

ここでは、yield文の後にパラメータが続きます。複数のパラメーターを渡すこともできます。このブロックでは、パラメータを受け入れるために、2つの垂直線(||)の間に変数を配置します。したがって、上記のコードでは、yield 5ステートメントは値5をパラメーターとしてテストブロックに渡します。

今、次のステートメントを見てください –

test {|i| puts "あなたはブロックテストを #{i}しています"}

ここでは、変数iに値5が入力されます

puts あなたはメソッドテストの最中です

このputs文の出力は次のとおりです。

あなたはブロックテストを5しています

複数のパラメータを渡す場合、yield文は次のようになります。

yield a, b

ブロックは –

test {|a, b| statement}

パラメータはコンマで区切られます。

ブロックとメソッド


ブロックとメソッドが互いにどのように関連しているかを見てきました。通常は、ブロックと同じ名前のメソッドからyield文を使用してブロックを呼び出します。したがって、

#!/usr/bin/ruby

def test
   yield
end
test{ puts "Hello world"}

この例は、ブロックを実装する最も簡単な方法です。yieldブロックを使用してテストブロックを呼び出します。

しかし、メソッドの最後の引数の前に&がある場合、このメソッドにブロックを渡すことができ、このブロックは最後のパラメーターに割り当てられます。*と&が引数リストにある場合、&は後に来るべきです。

#!/usr/bin/ruby

def test(&block)
   block.call
end
test { puts "Hello World!"}

これにより、次の結果が生成されます。

Hello World!

BEGINブロックとENDブロック


すべてのRubyソースファイルは、ファイルのロード中(BEGINブロック)とプログラムの実行終了後(ENDブロック)に実行されるコードブロックを宣言できます。

#!/usr/bin/ruby

BEGIN { 
   # BEGIN block code 
   puts "BEGIN code block"
} 

END { 
   # END block code 
   puts "END code block"
}
   # MAIN block code 
puts "MAIN code block"

プログラムには、複数のBEGINブロックとENDブロックを含めることができます。BEGINブロックは遭遇した順に実行されます。ENDブロックは逆の順序で実行されます。実行されると、上記のプログラムは次の結果を生成します。

BEGIN code block
MAIN code block
END code block

次のページ

前のページ

スポンサーリンク

ネットワークエンジニアになりたければ下記から無料相談会に参加!
なんと無料で授業を受けれてエンジニアになれます

投稿日:

執筆者: