任意のメソッドを指定した回数分繰り返すメソッド

昨日の(d:id:walf443:20060428:1146230192)を拡張して、"a".succ.succみたいな任意のメソッドを任意の回数繰り返すメソッドを考えてみました。

class Object
  def repeat(count, method, *args)
    count = count.to_i
    if count < 1
      return nil
    elsif count == 1
      return self.__send__(method, *args)
    else
      retrun self.__send__(method, *args).repeat(count-1,method, *args)
    end
  end
end

"a".repeat(3, :succ) #=> "d"

他の用途をあまり思いついてないので場合分けの動作は適切ではないかもしれません。
レシーバと同じオブジェクトを返すメソッドであれば使えると思います。

ただし、毎回これを書くなら普通に素直に書きますよね…。100回ぐらい同じメソッドでメソッドチェーンつなげるならもとが取れるかも。(スタックでエラーが起きる予感)