En Python, se puede hacer esto:¿Cómo emulo los parámetros printf con nombre de Python en Ruby?
print "Hi! I'm %(name)s, and I'm %(age)d years old." % ({"name":"Brian","age":30})
Cuál es el más cercano, más simple Rubí lenguaje de replicar este comportamiento? (No se monkeypatching la clase String, por favor.)
EDIT: Uno de los realmente excelentes ventajas de esto es que se puede almacenar la cadena de pre-procesado en una variable y utilizarlo como una "plantilla", al igual que :
template = "Hi! I'm %(name)s, and I'm %(age)d years old."
def greet(template,name,age):
print template % ({"name":name,"age":age})
obviamente, esto es un ejemplo trivial, pero hay un montón de utilidad en ser capaz de almacenar una cadena de este tipo para su uso posterior. La convención de Ruby "Hi! I'm #{name}"
es similar en apariencia, pero la evaluación inmediata la hace menos versátil.
No revoque las respuestas sugiriendo la técnica #{var}
, ya que vinieron antes de esta edición. (Núcleo de idea aleatoria: ¿Quizás las respuestas deberían estar protegidas de los votos si el autor de una pregunta las señala como "obsoletas" ...?)
No funciona con Ruby 1.9. –
En realidad, esto funciona si cambia las claves en el hash 'values' a Symbols en lugar de Strings:' values = {: hello => 'world',: world => 'hello'} '. Vea la última oración en la respuesta de [@ knut] (http://stackoverflow.com/a/12563022/504611). –
Tienes razón @VickyChijwani –