任意のメソッドを指定した回数分繰り返すメソッド
昨日の(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回ぐらい同じメソッドでメソッドチェーンつなげるならもとが取れるかも。(スタックでエラーが起きる予感)