2012-05-09 9 views
1
var = 5 

puts "Method #1: #{var}" 
puts "Method #2: %d" % var 

私は、それぞれの方法に利点と欠点がある場合は、それを探しています。putコマンドを使用する2つの方法の違いは何ですか?

+0

あなたが 'puts'を使っているという事実は無関係であることに注意してください。これらはどちらも' puts'のない完全に有効な式です。 –

+0

私はそれを実現しました。 'puts'キーワードよりも、文字列の書式設定/操作に関係します。 – stanigator

+0

Yup、前者は普通の文字列補間であり、後者は実際には[String on method](http://ruby-doc.org/core-1.9.3/String.html#method-i-25)です。 –

答えて

3

最初の文字列は単純な文字列補間で、2番目の文字列はKernel#sprintfの構文的な砂糖です。

可変データを含む文字列を生成する必要がある場合は、最初の文字列を使用します。 2番目の方法は、変数を文字列に入れるだけでなく、特殊な書式設定が必要な場合に適しています。最初のものはパフォーマンスが優れているので、特殊な書式が必要な場合を除き、そうすることができます。

"hello #{var}"は、"hello " + varよりはるかに高速です。

+2

これは "sprintfの構文的な砂糖"ではありませんが、 'String#%'メソッドです。 – Phrogz

関連する問題