Lo siento si está duplicado (no lo encontré)¿Es "==" en Ruby siempre valorar la igualdad?
Esto es solo para confirmar que el operador de Ruby ==
realiza siempre una comparación de igualdad. Es decir
a == b
compara el valor de un valor de b en contra, en lugar de, como Java, ya sea que apuntan al mismo objeto en la memoria (Para esta última cosa, en Ruby, se debe utilizar a.object_id == b.object_id
).
Por lo tanto, como consecuencia de que es seguro para comparar los valores de cadena con == en Ruby (aunque no es seguro hacerlo en Java)
Gracias
Editar:
La pregunta es sobre el comportamiento predeterminado == para cualquier objeto Ruby, ya que puede inducir a error a los programadores Java-C-C++ suponiendo que == b compara las referencias mismas, no los contenidos de referencia.
De todos modos, usted puede sacar de este código, el uso de cadenas
one="hello"
two="he"
two << "llo"
if one == two
puts "surprise: comparing values, not like in Java"
end
if not one.object_id == two.object_id
puts "obvious: do this to compare references"
end
Editar 2.
Así, en Ruby, la comparación
a == b
controles A y los valores de b
pero, la asignación
a = b
no copia los valores, sino que hace A y el B a el mismo objeto!
continuar con el código anterior
puts one.object_id
puts two.object_id
puts " and now "
one = two
puts one.object_id
puts two.object_id
Sí. http://stackoverflow.com/questions/1710369/most-concise-way-to-test-string-equality-not-object-equality-for-ruby-strings – nneonneo
El enlace se hace referencia no es un duplicado de esta pregunta ... –
Sí, lo primero que me di cuenta es que en Ruby, el operador '==' y la función 'igual' están invertidos a lo que se espera en C idiomas similares. – EliuX