Вы либо a) Не нужно это =
знак:
formatter = "%s %s %s %s"
puts formatter % [1, 2, 3, 4]
или b) необходимо присвоить результат formatter
по-другому:
formatter = "%s %s %s %s"
puts formatter = formatter % [1, 2, 3, 4]
или
formatter = "%s %s %s %s"
formatter = formatter % [1, 2, 3, 4]
puts formatter
Прежний ответ для b присваивает результат formatter
, а затем выводит результат этого присваивания, который будет справа. Я бы порекомендовал последний (и вы могли бы, конечно, сжать две верхние строки в одну строку) только потому, что он понятнее.
Edit:
Кроме того, если вы проверите код в Learn Ruby the Hard Way , они ничего не переназначают на formatter
. Дело в том, что вы можете предоставить любой массив из четырех элементов через formatter %
, и он будет производить текстовое содержимое этих четырех элементов. Я вижу, что это просто погружение в методы Ruby (и вы, возможно, незнакомы с printf ), но следующее эквивалентно:
puts formatter % [1, 2, 3, 4]
puts formatter.%([1, 2, 3, 4])
# And the very retro
puts sprintf(formatter, 1, 2, 3, 4)
Другими словами, хотя у операторов есть несколько нюансов - просто немного сахара, который вы можете использовать для обозначения результата, например %=
, и вам не нужно .
, разделяющее объект и его метод - это всего лишь методы. Вы можете посмотреть %
в документации Ruby , как и любой другой метод.