El mismo comportamiento ocurriría si world
fuera un número.
"hello" + 1 # Doesn't work in Ruby
"hello #{1}" # Works in Ruby
Si desea agregar una cadena a otra, poner en práctica to_str
en él:
irb(main):001:0> o = Object.new
=> #<Object:0x134bae0>
irb(main):002:0> "hello" + o
TypeError: can't convert Object into String
from (irb):2:in `+'
from (irb):2
from C:/Ruby19/bin/irb:12:in `<main>'
irb(main):003:0> def o.to_str() "object" end
=> nil
irb(main):004:0> "hello" + o
=> "helloobject"
to_s
significa "Usted me puede convertir en una cadena", mientras que to_str
medios "para todos los intentos y propósitos , Soy un hilo ".
JavaScript es de tipos dinámicos y débilmente mecanografiadas, este último significado que ciertas conversiones suceden para usted. (De ahí el viejo problema '' 1 '+ 1 ==' 11''.) Ruby tiene un tipo dinámico pero está fuertemente tipado, lo que significa que (con pocas excepciones) necesita realizar conversiones explícitamente. – Phrogz