Ruby newbie. ¿Qué pasa con este código?Ruby Float to String error
city_details['longitude'] + "," + city_details['latitude']
me sale este error:
./player_location.rb:6:in `+': String can't be coerced into Float (TypeError)
Ruby newbie. ¿Qué pasa con este código?Ruby Float to String error
city_details['longitude'] + "," + city_details['latitude']
me sale este error:
./player_location.rb:6:in `+': String can't be coerced into Float (TypeError)
Parece que city_details['longitude']
city_details['latitude']
y son Float
valores.
No se puede agregar Float
a un String
en Ruby como este. Puede convertir todo a String
, y luego +
, o usar la interpolación de cadenas.
city_details['longitude'].to_s + "," + city_details['latitude'].to_s
"#{city_details['longitude']},#{city_details['latitude']}"
La mayoría de los Ruby tienden a utilizar la interpolación de cadenas.
Se queja de que el hecho de que usted está tratando de concatenar una float
con un string
.
La mejor manera de hacer esto es mediante el que hace la cadena de interpolación:
"#{city_details['longitude']}, #{city_details['latitude']}"
Otras soluciones posibles:
podría convertir cada flotador de cuerda, llamando al método to_s
como esto:
city_details['longitude'].to_s + "," + city_details['latitude'].to_s
o puede utilizar el método de join
:
[city_details['longitude'], city_details['latitude']].join(",")
el primer enfoque es 2 veces más lento que la interpolación, el segundo tal vez el peor. –
Sí, es correcto. Edité mi respuesta para señalar el mejor enfoque. Sin embargo, es bueno conocer todas las formas posibles de hacerlo, porque podrían ser útiles en otros casos. –
la interpolación es más rápida porque ruby crea un objeto String único, mientras que el uso de '+' crea una cadena para cada operando. es por eso que la mayoría de los rubistas usan interpolación. –