succを複数回呼ぶには
id:ha-tan:20060430:1146408188のコードを書いているときに、複数回succを呼べてもいいかなと思いつきました。試しに以下のモジュールを書いてみました。
#!/usr/bin/env ruby module Successor def succn(n = 1) obj = self n.times { obj = obj.succ } obj end end module DestructiveSuccessor def succn!(n = 1) obj = self n.times { obj = obj.succ! } obj end end class Integer include Successor end class String include Successor, DestructiveSuccessor end p 1.succn(3) # => 4 p '0001'.succn(10) # => "0011" s = '1' p s.succn!(3) # => "4" p s # => "4"