2009-04-02 20 views

Respuesta

31

Los métodos con un signo de exclamación al final suelen denominarse métodos bang. Un método bang no necesariamente modifica su receptor, así como tampoco hay garantía de que los métodos sin un signo de exclamación no lo hagan.

Todo está muy bien explicado en this blog post. Para citar la publicación:

The! en los nombres de métodos que terminan con! significa, "Este método es peligroso" -o, más precisamente, este método es la versión "peligrosa" de un método equivalente con el mismo nombre menos el! "Peligro" es relativo; el ! no significa nada a menos que el nombre del método en el que se encuentra corresponda a un nombre de método similar pero sin bang-less.

y

El! no significa "Este método cambia su receptor". Muchos métodos "peligrosos" cambian sus receptores . Pero algunos no lo hacen. Repito: ! no significa que el método cambie su receptor.

11

El método down-down() de non-bang simplemente devuelve un nuevo objeto que representa la cadena que se acaba.

La versión bang modifica su cadena en sí.

my_text = "MY TEXT" 
my_new_text = my_text.downcase 
puts my_new_text # will print out "my text" 
puts my_text  # will print out "MY TEXT" - the non-bang method doesn't touch it 

my_text.downcase! 

puts my_text # will print out "my text". The bang version has modified the object you're calling the method on 
Cuestiones relacionadas