2006-08-01
■ [ruby] sprintfの引数の順序を入れ替える方法があるって知ってた?
http://www.yotabanana.com/lab/20060729.html#p02
とりあえず、「文字列 % なんか」という書き方(String#%)は知ってるよね。
irb(main):001:0> "My name is %s" % "yhara" => "My name is yhara"
これは下のようなsprintfと同じ。
irb(main):002:0> sprintf("My name is %s", "yhara") => "My name is yhara"
で、「文字列 % 配列」のようにすると複数の引数を渡せるんだけど、
irb(main):003:0> "%s %s" % ["AB", "CD"] => "AB CD"
ここで「%s」の代わりに「%2$s」みたいに書くと引数の順序を入れ替えられるという。
irb(main):004:0> "%2$s %1$s" % ["AB", "CD"] => "CD AB"
確かにsprintfフォーマットの
一番下にこっそり書かれてるなぁ。全然知らなかった。