トップ «前の日記(2006-07-15) 最新 次の日記(2006-08-02)» 編集

Route 477



2006-08-01

[lab] 嵐は過ぎ去った

怒涛のレポート攻勢もなんとか一段落。

あと8日提出のレポートを書けば夏休みだぜ!

[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フォーマットの 一番下にこっそり書かれてるなぁ。全然知らなかった。