rubyのblockの評価

gold対策。(基礎力確認問題6)

<p>Hello World.</p>

と出力させるメソッド定義を選択させる問題が出題されました。
(多分正解したはず。)
 
yieldで出力させる方法と、Procオブジェクトとして扱う方法があります。

def tag t
  print "<#{t}>#{yield}</#{t}>"
end

tag(:p){ 'Hello World.' }
def tag(t, &block)
  print "<#{t}>#{block.call}</#{t}>"
end

tag(:p){ 'Hello World.' }