まとめてメッセージ送信

メッセージ(メソッド名と引数)の配列をあるオブジェクトに対してまとめて送信するには。
んんー。とりあえずこんなの考えてみました。

class Object
  def send_mesgs(mesgs)
    mesgs.each do |meth, *args|
      send(meth, *args)
    end
  end
end

mesgs = [[:push, 1],
         [:push, 2],
         [:push, 3]]

ary = []
ary.send_mesgs(mesgs)
p ary # => [1, 2, 3]

(追記) よくよく考えたら以下でOKでした。

class Object
  def send_mesgs(mesgs)
    mesgs.each do |args|
      send(*args)
    end
  end
end

mesgs = [[:push, 1],
         [:push, 2],
         [:push, 3]]

ary = []
ary.send_mesgs(mesgs)
p ary # => [1, 2, 3]