用語が何と呼ばれているのかわかりませんが(置換?)、Pythonで入力すると
num1 = 4
num2 = 2
print("Lucky numbers: %d %d" %(num1, num2))
あなたは「ラッキーナンバー:42」を手に入れます
ルビーでこれを行うにはどうすればよいですか?
上記のシナリオを実行しようとすると、1つの変数がある場合は機能しますが、複数の変数をサブインする必要がある場合、括弧は有効な構文ではありません。
用語が何と呼ばれているのかわかりませんが(置換?)、Pythonで入力すると
num1 = 4
num2 = 2
print("Lucky numbers: %d %d" %(num1, num2))
あなたは「ラッキーナンバー:42」を手に入れます
ルビーでこれを行うにはどうすればよいですか?
上記のシナリオを実行しようとすると、1つの変数がある場合は機能しますが、複数の変数をサブインする必要がある場合、括弧は有効な構文ではありません。
これを実現するには、Rubyで文字列補間と呼ばれるものを使用できます。
元:
num1 = 4
num2 = 2
puts "Lucky numbers: #{num1} #{num2}";
ここで、#{}内にある各変数は、文字列としてではなく変数名として解釈され、値が置き換えられます。
num1 = 4
num2 = 2
print "Lucky numbers: %d %d" % [num1, num2]
n1, n2 = 17, 42
puts "Lucky single number: %d" % n1
puts "Lucky multiple numbers: %d %d" % [ n1, n2 ]
puts "Lucky inline interpolation: #{n1} #{n2}"
String#%
メソッドで許可されているフォーマットのドキュメントについては、を参照してKernel#sprintf
ください。
文字列の置換にハッシュを使用することもできます。これは、同じ文字列で置き換える必要のあるインスタンスが複数ある場合に役立ちます。
p "%{foo} == %{foo}" % {:foo => "bar" }
# => "bar == bar"
Pythonの構文を最もよく模倣するRubyメソッドは、相互のエイリアスであるとですsprintf
。それらについては、 RubyDocsformat
で詳しく読むことができます。
次に例を示します。
num1 = 4
num2 = 2
sprintf("Lucky numbers: %d %d", num1, num2)
これは次のように出力します:「ラッキーナンバー:42」
もちろん、括弧はオプションです。
これは印刷フォーマットと呼ばれます。
その他の例を確認するRuby形式の印刷
あなたはそのようなことを試しました"%d"%10
か?に評価します"10"
1.9.3-p0 :003 > "%02x"%(10)
=> "0a"
1.9.3-p0 :004 >
1.9.3-p0 :005 > print "Nicely formatted string with an int: %d" % 10
Nicely formatted string with an int: 10 => nil
1.9.3-p0 :006 >