sprintf

なんか気に食わない。Ruby っぽくないような気がする。

p sprintf("%05d", 123)

C言語っぽいね。

p "%05d" % 123

これはまぁまぁ。けど、いちげんさんでは読めない。


String#sprintf とかあったら良いと思うのだがどうか?

class String
  def sprintf(*args)
    Kernel.sprintf(self, *args)
  end
end

p "%05d".sprintf(123)


Integer#to_s(n) が n進数文字列を作ってくれるが、似たようなのがあると嬉しい。

class Integer
  def format(str)
    sprintf(str, self)
  end
end

p 123.format("%05d")

というか Integer#to_s(format) の方が良くね? いっそのこと Object#format だと問題ありすぎか?

Date#strftime も統一できたらなお良いが書式指定子の意味が違うからなー。