以前、ドヤ顔で紹介した文字列に配列で変数を入れ込むテクですが...
目下翻訳中のコーディング規則によるとバッドノウハウらしいです(白目
# bad '%d %d' % [20, 10] # => '20 10'
文字列として出力したい場合はsprintf
出力したい場合はsprintfです。
printfじゃぁなんだよ
# good sprintf('%d %d', 20, 10) # => '20 10' # good sprintf('%{first} %{second}', first: 20, second: 10) # => '20 10'
文字列を生成したいだけの場合はformat
単にStringのインスタンスを作りたいだけならformatでいけます。
#good format('%d %d', 20, 10) # => '20 10' # good format('%{first} %{second}', first: 20, second: 10) # => '20 10'
%{}記法の方が後々読みやすい
どちらの場合も、マジックナンバーを避ける意味でも後者の方が良さ気ですね。
次のように、変数を仕込む事も可能なので使い回しが効きます。
potato = 10 #=> 10 format('Price :: %{value}', value: potato) #=> "Price :: 10" potato = 99 #=> 99 format('Price :: %{value}', value: potato) #=> "Price :: 99"