Métodos .reverse y .reverse!

Los métodos .reverse y .reverse! hacen exactamente lo mismo, invierten el contenido de un string, pero con una diferencia que veremos con un par de ejemplos para entender cuándo conviene usar uno u otro.

¿Cuándo usar el método .reverse?

Este método es recomendado usarlo cuando queremos obtener un nuevo string invertido sin alterar el string original, ya sea porque vamos a realizar comparaciones entre ambos o porque vamos a trabajar sobre ambos strings de forma separada en diferentes partes del código. Usare como ejemplo el código de Palíndromos:

print "Ingrese la palabra que desea evaluar: "
texto = gets().chomp("\n")

textrevers = texto.reverse

if textrevers.downcase.eql?(texto.downcase)
  puts "La palabra ingresada si es palíndromo"
else
  puts "La palabra ingresada no es palíndromo"
end

En este fragmento de código buscamos saber si una palabra ingresada por el usuario es o no es palíndromo y como tal vamos a comparar 2 strings, el original contra uno invertido. Usamos el método .reverse para crear un nuevo string invertido que es almacenado en la variable textrevers sin alterar el string original.

¿Cuándo usar el método .reverse!?

Este método es recomendado usarlo únicamente cuando queremos invertir el contenido del string alterando el string original, es decir, cuando no vamos a necesitar más el string original.

print "Ingrese la palabra que desea invertir: "
palabra = gets().chomp("\n")

puts "Palabra ingresada: #{palabra}"

palabra.reverse!
puts "Palabra invertida: #{palabra}"

En este fragmento de código leemos una palabra ingresada por el usuario y en la línea #6 se invoca al método .reverse! sin crear alguna variable para almacenar un strings nuevo, esto se debe a que el método .reverse! modifica directamente el string original. Al ejecutar el programa veremos algo como esto:

[fixedtorres@linuxero]$ ruby MetodosReverse.rb
Ingrese la palabra que desea invertir: araña
Palabra ingresada: araña
Palabra invertida: añara
[fixedtorres@linuxero]$ ruby MetodosReverse.rb
Ingrese la palabra que desea invertir: arenera
Palabra ingresada: arenera
Palabra invertida: arenera
[fixedtorres@linuxero]$ 




Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *