Object#tapを制御構造で実現する方法

ensureのreturning的な使い方 - Hello, world! - s21g

Ruby on RailsのreturningはObject#tapであるRuby 1.8.7以降で使えるObject#tapに萌えるのはtapかわいいよtap - http://rubikitch.com/に移転しましたを参照してくれ。

これってbegin〜ensureで記述できるんだね。ensure節の評価値は無視されることは知っていたのだが、こいつは盲点だった。まさかObject#tapがensureで記述できるなんて。

begin
  a = []   # 初期値
ensure
  a[0]=1   # 破壊的更新
end
a                               # => [1]
# tapで書くとこんな感じ
[].tap {|b| b[0] = 1 }          # => [1]

うーん、syntax highlight記法を使うとうまく表示されない。おかしいなぁ…