Estoy aprendiendo Ruby y no entiendo la diferencia entre varios métodos de Ruby con y sin '!' al final. ¿Cual es la diferencia? ¿Por qué debería usar uno sobre el otro?Diferencia entre downcase y downcase! en Ruby
Respuesta
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.
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
- 1. Rails Active Record translation: Auto capitalize/downcase?
- 2. Campo de downcase masivo para todos los registros en rieles
- 3. Diferencia entre "y" y && en Ruby?
- 4. ¿Diferencia entre <=> y == en Ruby?
- 5. Diferencia entre bloque y bloqueo en Ruby
- 6. Ruby: Diferencia entre Instancia y variables locales en Ruby
- 7. Ruby - Diferencia entre: variable y @variable
- 8. ¿Cuál es la diferencia entre Ruby y Ruby on Rails?
- 9. ¿Diferencia entre == y caso?
- 10. Obtener diferencia entre matrices en Ruby
- 11. Diferencia entre el mapa y coleccionar en Ruby?
- 12. ¿Cuál es la diferencia entre STDIN y $ stdin en Ruby?
- 13. ¿Cuál es la diferencia entre require_relative y require en Ruby?
- 14. ¿cuál es la diferencia entre salir y salir? en ruby?
- 15. Diferencia entre lambda y method_name def en Ruby
- 16. ¿Cuál es la diferencia entre% Q y% {} en ruby?
- 17. ¿Cuál es la diferencia entre Class y Klass en ruby?
- 18. Diferencia en cifrado blowfish entre perl y ruby
- 19. ¿Cuál es la diferencia entre include y require en Ruby?
- 20. ¿Cuál es la diferencia entre Object y BasicObject en Ruby?
- 21. ¿Cuál es la diferencia entre incluir y extender en Ruby?
- 22. Ruby on rails diferencia entre integración y prueba funcional
- 23. ¿Cuál es la diferencia entre Rack y Rails Metal (Ruby)?
- 24. Ruby, Rails y la diferencia entre dos fechas
- 25. Ruby, diferencia entre exec, sistema y% x() o Backticks
- 26. ¿Cuál es la diferencia entre Ruby on Rails y Grails?
- 27. Ruby - Diferencia entre Array # << y Array # push
- 28. Diferencia entre. y: en Lua
- 29. Diferencia entre == y === en JS
- 30. Diferencia entre '' y "" en Python