В Python вы можете сделать это:
print "Hi! I'm %(name)s, and I'm %(age)d years old." % ({"name":"Brian","age":30})
Какая самая близкая и самая простая идиома Ruby для воспроизведения этого поведения? (Пожалуйста, не используйте обезьяны для класса String.)
РЕДАКТИРОВАТЬ: Одним из действительно замечательных преимуществ этого является то, что вы можете сохранить предварительно обработанную строку в переменной и использовать ее в качестве «шаблона», например так:
template = "Hi! I'm %(name)s, and I'm %(age)d years old."
def greet(template,name,age):
print template % ({"name":name,"age":age})
Это, очевидно, тривиальный пример, но есть много полезности для возможности хранить такую строку для дальнейшего использования. Соглашение Ruby "Hi! I'm #{name}"
очень похоже, но немедленная оценка делает его менее универсальным.
Пожалуйста, не занижайте ответы, предлагающие технику #{var}
, как они пришли до этого редактирования. (Ядро случайной идеи: возможно, ответы должны быть защищены от голосов, если автор вопроса помечает их как «устаревшие» ...?)