regulares metodos manejo interpolar funciones expresiones concatenacion clase cadenas asignacion ruby

metodos - La forma más concisa para probar la igualdad de cadenas(no la igualdad de objetos) para cadenas de Ruby o símbolos?



metodos de la clase string (2)

Siempre hago esto para probar la igualdad de cadenas en Ruby:

if mystring.eql?(yourstring) puts "same" else puts "different" end

¿Es esta la forma correcta de hacerlo sin probar la igualdad de objetos?

Estoy buscando la forma más concisa para probar cadenas basadas en su contenido.

Con los paréntesis y el signo de interrogación, esto parece un poco torpe.



La muestra de su código no se expandió en parte de su tema, es decir, símbolos, por lo que esa parte de la pregunta no recibió respuesta.

Si tiene dos cadenas, foo y barra, y ambas pueden ser una cadena o un símbolo, puede probar la igualdad con

foo.to_s == bar.to_s

Es un poco más eficiente omitir las conversiones de cadenas en operandos de tipo conocido. Entonces, si foo es siempre una cadena

foo == bar.to_s

Pero la ganancia de eficiencia casi no merece la pena exigir ningún trabajo adicional en nombre de la persona que llama.

Antes de Ruby 2.2, evite internar cadenas de entrada no controladas para fines de comparación (con cadenas o símbolos), ya que los símbolos no son basura recolectada, por lo que puede abrirse a la denegación de servicio por agotamiento de recursos. Limite el uso de símbolos a los valores que controla, es decir, literales en su código y propiedades de configuración confiables.

Ruby 2.2 introdujo la recolección de basura de símbolos .