Rubyがミニツク

あなたのRubyの技術に関するより詳しい知識と理解を増やします。

Ruby入門コース

このコースについて

Rubyのeラーニング研修システムはRailsを使ってWebアプリケーション開発ができる技術者の育成を目指します。 そのため、Railsを扱うことができるだけのRubyの知識を得ることがRuby入門コースの目標となっています。

コンテンツ一覧

ヒント レッスンの名前をクリックすると、その内容を表示します。

次のコンテンツ ホームへ戻る

ブロック付きメソッド呼出し

ブロック付きメソッド呼出しをおこなった時に、メソッドの後ろに付けるブロックはRubyの特徴的な機能のひとつです。そのブロックから制御をメソッドへ戻すやり方について説明します。

yield

yieldを使うことによって、ブロック付きメソッド呼出しの時にブロックの中のプログラムの処理をおこないます。実際にyieldがある場合とない場合のプログラムが以下になります。

def show
  puts "Enjoy!"
end
show { puts "Programming!" }  #=> Enjoy!

def show
  puts "Enjoy!"
  yield
end
show { puts "Programming!" }  #=> Enjoy! Programming!

定義したメソッドを呼び出した時にyieldがメソッドの中にないと、ブロックの中の処理をおこないません。yieldがないとブロックの中にある処理は無視します。メソッドの中にyieldがある時は、ブロックの中へ処理を移します。ブロックの中の処理をすべておこなってから、またメソッドの中に戻り、yieldの下から処理をおこないます。

つまり以下のようにすると、メソッドからブロックへ移ることを2回おこないます。

def double
  yield
  yield
end
double { puts "Two" }

また、yieldの引数として式を指定することによって、その値がブロックパラメータになります。

def foo
  yield "Hello!"
end
foo {|x| puts x}  #=> Hello!

引数の数を増やすことによって、その数だけブロックパラメータの数も増えます。

def foo
  yield "Hello!", "Enjoy", 42 + 23
end
foo {|x, y, z| puts x, y, z }


次のコンテンツ ホームへ戻る