1.渡されたブロックを実行する

def dice
  if block_given?# block_given?メソッドは「ブロックを受け取ってますか?」というメソッド
    puts "run block!"
    yield# ブロックを実行
  else
    puts "normal dice"
    puts [1,2,3,4,5,6].sample
  end
end

dice

dice do#-------このブロックが実施される----------
  puts [4,5,6].sample
end

2.渡されたブロックを引数で受け取る

ブロックを引数で受け取るときは「def XXX(&b)」のように、先頭に「&」をつけることでわたすことが可能

引き渡されたブロックは callメソッドを使うことで実行することができる

def foo(&b)#ブロックを変数「b」に代入して引数として渡しているので「&」のあとの文字は何でも良い
  b.call#callメソッドでブロックを実行
	puts b.class
end

foo do
  puts "HelloWorld!"
end

HelloWorld!
Proc #*引数としてブロックを渡した際、ブロックは「Proc」というオブジェクトになっている*