Ответ 1
num1 = 4
num2 = 2
print "Lucky numbers: %d %d" % [num1, num2]
Не знаю, что называется этим термином (подстановка?), но в python, если вы введете
num1 = 4
num2 = 2
print("Lucky numbers: %d %d" %(num1, num2))
Вы получаете "Счастливые числа: 4 2"
Как это сделать в ruby?
Пытаясь выполнить описанный выше сценарий, он работает, если у меня есть одна переменная, но если мне нужно добавить sub в несколько переменных, скобки не являются допустимым синтаксисом.
num1 = 4
num2 = 2
print "Lucky numbers: %d %d" % [num1, num2]
Вы можете использовать что-то, называемое String-интерполяция в Ruby, чтобы выполнить это.
Пример:
num1 = 4
num2 = 2
puts "Lucky numbers: #{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"
Он называется форматированием печати.
Ознакомьтесь с другими примерами Рубированная форматированная печать
Вы пробовали что-нибудь вроде "%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 >
Методы Ruby, которые наиболее точно имитируют этот синтаксис в Python, это sprintf
и format
, которые являются псевдонимами друг для друга. Подробнее о них можно прочитать в Ruby Docs.
Вот пример:
num1 = 4
num2 = 2
sprintf("Lucky numbers: %d %d", num1, num2)
Это приведет к выводу: "Lucky Numbers: 4 2"
Скобки, конечно, необязательны.