ブロックの使い方を練習してみます。 def repeat(n) n.times { yield } if block_given? end repeat(2) { puts "Hello." } # Hello. # Hello. メソッドに渡したブロックはyieldを用いて呼び出します。 似たような例としてもう一つ。 # nからmまでの自然数の合計を求める def sumup(n, m, sum=0) (n..m).each { |x| # yield でブロックを呼び出す yield if block_given? # 引数にブロックが与えられている puts x sum += x } puts "Sum : #{sum}" end sumup(2, 4) { printf "Add : " } #Add : 2 #Add : 3 #Add : 4 #Sum : 9 渡されたブロックは
![Ruby: メソッドの引数にブロックを渡す](https://cdn-ak-scissors.b.st-hatena.com/image/square/22c5887a1a17699b25e52574c2389ed9bc94fbc6/height=288;version=1;width=512/https%3A%2F%2Fyukun.info%2Fwp-content%2Fthemes%2Fsimplicity2-child%2Fimages%2Fog-image.jpg)