2009-12-21 12 views
58

Soy un begineer total en ruby, así que es una pregunta muy nueva.Cadena concatenante con número en rubí

Estoy tratando de concatenar una cadena con un valor flotante de la siguiente manera y luego imprimirlo.

puts " Total Revenue of East Cost: " + total_revenue_of_east_cost 

total_revenue_of_east_cost es una variable con valor flotante, ¿cómo puedo imprimirlo?

Respuesta

84

Esto no es exactamente la concatenación pero va a hacer el trabajo que quiere hacer:

puts " Total Revenue of East Cost: #{total_revenue_of_east_cost}" 

Técnicamente, se trata de interpolación. La diferencia es que la concatenación se agrega al final de una cadena, mientras que la interpolación evalúa un bit de código y lo inserta en la cadena. En este caso, la inserción viene al final de su cadena.

Ruby evaluará cualquier cosa entre llaves en una cuerda donde la llave de apertura está precedida por un octothorpe.

+0

Gracias, puedo saber la regla aquí para la concatenación? – itsaboutcode

+8

Siempre y cuando la cadena esté contenida en comillas dobles ... – Mike

+6

octothorpe es que los EE. UU. Hablan de hash;) – ravi

48

La respuesta de Stephen Doyle, utilizando una técnica conocida como "Interpolación de cadenas" es correcta y probablemente la solución más fácil, sin embargo, hay otra manera. Al invocar un método to_s de objetos, ese objeto se puede convertir en una cadena para imprimir. Entonces lo siguiente también funcionará.

puts " Total Revenue of East Cost: " + total_revenue_of_east_cost.to_s 
+0

hmm, muchas gracias. – itsaboutcode

+2

BTW: la interpolación de cadenas llama a 'to_s' automáticamente, si el resultado de la expresión interpolada ya no es' String'. –

7

Para su ejemplo, es posible que desee algo más específico que el método to_s. Después de todo, to_s en un flotador a menudo incluye más o menos precisión de la que desea mostrar.

En ese caso,

puts " Total Revenue of East Coast: #{sprintf('%.02f', total_revenue_of_east_coast)}" 

podría ser mejor. # {} puede manejar cualquier fragmento de código ruby, por lo que puede usar sprintf o cualquier otro método de formato que desee.

5

me gustaría (ver clase String% para más detalles):

puts " Total Revenue of East Coast: " + "%.2f" % total_revenue_of_east_coast 
+0

cómo formatear al usar un Hash: "% 002d"% 23 -> 023. "% {k}"% {k: 23} -> 23. ¿Cómo obtener "023" ?. – jgomo3

+0

Entonces "% 002d"% 23 -> 23 no 023. Si se encuentra "% 03d"% 23 -> 023. Ahora, para usar los datos de un hash en lugar de un número fijo, no modifique la cadena de formato . Simplemente haga algo como "% 03d"% {k: 23} [: k] -> 023 –

+1

Stil perderé las ventajas de usar un hash en lugar de una lista. es decir, "Hola {nombre}, me alegra que {tus cosas} sea ... Entonces, {nombre}: ¿Qué dice {stuff} bla bla bla? ... {stuff} ... {name}"% { : nombre => "Jesús",: material => "mascota"}. Imagine que con una lista, tiene que repetir "nombre" y "cosas" muchas veces. Y ahora, quiero esa ventaja además de ser capaz de formatear. ¿Cómo? – jgomo3

0

Ejemplo bucle

(1..100).each do |i| puts "indice #{i} " end 
+0

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) lo hará poder [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment). – Palpatim

Cuestiones relacionadas