指定した回数分String#succ
あぁっ、String#succ が 引数回数分 succ してくれたら!
From: http://d.hatena.ne.jp/babie/20060428/p4
ということでやってみました。
class String alias_method :succ_orig, :succ def succ(count=1) count = count.to_i if count < 1 return self.dup elsif count == 1 return self.succ_orig else return self.succ_orig.succ(count-1) end end end
負の値を取ったりしたときは逆方向に動かそうかと思ったけど逆のことをするメソッドがなかった。
それにしても普通の例題などはやる気が起きないのに、メタプログラミングばっかり食指が動いてしまう。何故だろう。
追記(06/04/29 1:32)
...
259:iz
SystemStackError: stack level too deep
...
再帰を使っているため、うちの環境では259以上の引数を取るとエラーになるようです。継続を使って書き換えたりするとよいかも。
追記(06/04/29 19:59)
d:id:walf443:20060429:1146302741で任意のメソッドで同様のことが出来るメソッドObject#repeatを書いてみました。