0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ブロックとはなんなのか

Posted at

ブロックとは?(抜粋)

“ブロックはメソッドの引数として渡すことができる処理のかたまりです。ブロック内で記述した処理は必要に応じてメソッドから呼び出されます。”

“Rubyでは「要件を問わず共通する処理」はメソッド自身に、「要件によって異なる処理」はブロックにそれぞれ分担させて、1つの処理を完了させるメソッドが数多く用意されています。”

処理のかたまりとは何か

 例えば配列がから要素を受け取って、それを総計にして返すといったような複雑な処理

 numbers = [1,2,3,4,5]
 sum = 0  
 numbers.each do |n|
   sum += n 
 end
 puts sum # 15が出力

doからendまでが処理の塊
また以下のようにも書ける

numbers = [1,2,3,4,5]
sum = 0  
numbers.each{|n|
  sum += n 
}
puts sum # 15が出力

要件を問わない処理、要件によって異なる処理ということはどういうことか

上の例で言えば、配列をすべ取り出す同じ処理がeachメソッドで行われる。これはハッシュでも同じだが、どんなものが来ても要素を一つずつ最後まで渡すという処理は変わらない。
逆にブロックの要素は例えば奇数だけ合計するといった処理にも変更できる。

numbers = [1, 2, 3, 4, 5]
sum = 0  
numbers.each do |n|
  if n.odd?  # 奇数の場合のみ
    sum += n
  end
end

puts sum
# 9が出力

参考文献

抜粋

Software Design plusシリーズ プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで
伊藤 淳一

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?