読者です 読者をやめる 読者になる 読者になる

sprintfが、引数にHashを取って、キーで参照できるようになった

ruby

まつもとさんのコミットr19641でsprintfがキー参照できるようになりました。
%{name}が書式なし版、%が書式あり版です。

puts sprintf("%<name>s is %<year>d years old, %{name}は%{year}歳です。"
  ,:name=>"xibbar",:year=>100)

結果は

% ruby19 /tmp/sprintf.rb
xibbar is 100 years old, xibbarは100歳です。

となります。
%<>で指定する場合は、%sとか%dのように書式が必要です。
%fのような指定や、%05dのように書式を指定可能です。

puts sprintf("%<salary>05d円,%<salary>3.2f$",:salary=>100)

を実行すると

% ruby19 /tmp/sprintf.rb
00100円,100.00$

と表示されます。
これはonigurumaの名前参照を使っているので、1.8には追加はされません。