¿Es def greet; puts "hello"; end
la única forma de definir un método en una línea en Ruby?¿Cómo puedo definir un método en una línea en Ruby?
Respuesta
Usted puede evitar la necesidad de usar punto y coma si se utiliza paréntesis:
def hello() :hello end
Esto es más largo que usar punto y coma ...? – Apollys
def add a,b; a+b end
El punto y coma es el terminador de sentencia en línea para Ruby
o puede utilizar el método define_method
. (Edit: de este obsoleto en uno de rubí 1,9)
define_method(:add) {|a,b| a+b }
No es necesario ';' antes de 'end'. – Nakilon
@Nakilon, corregido ahora. Gracias – edgerunner
No parece estar en desuso en Ruby 2+ – michau
Otra forma:
define_method(:greet) { puts 'hello' }
puede ser utilizado si usted no desea introducir nuevas posibilidades de método, mientras que definirlo.
NoMethodError: método privado 'define_method 'llamado Objeto: Clase en Ruby 1.9.3 – Jared
' define_method' ha sido "privatizado" en Ruby 1.9 – edgerunner
¡¡¡Deprecated !!! @Jared ¡Actualízalo! : P –
otra manera:
def greet() return 'Hello' end
En Ruby, el valor de retorno de un método es el valor devuelto por la última declaración. No necesita el 'retorno' aquí ya que no es una cláusula de guardia. – Damien
acaba de dar la respuesta fresco completo:
En general, evite sola métodos en línea Aunque son algo populares en la naturaleza, hay algunas peculiaridades sobre su sintaxis de definición que hacen que su uso sea indeseable. En cualquier caso, debe haber no más de una expresión en un método de línea única.
# bad
def too_much; something; something_else; end
# okish - notice that the first ; is required
def no_braces_method; body end
# okish - notice that the second ; is optional
def no_braces_method; body; end
# okish - valid syntax, but no ; make it kind of hard to read
def some_method() body end
# good
def some_method
body
end
Una excepción a la regla son los métodos de vacío de cuerpo.
# good
def no_op; end
- 1. ¿Cómo puedo definir un método en una fábrica de FactoryGirl?
- 2. Definir un método que sea un cierre en Ruby
- 3. ¿Cómo puedo definir/nombrar un bloque en Ruby?
- 4. ¿Debo definir un método principal en mis scripts de ruby?
- 5. Cómo #definir __forceinline en línea?
- 6. Cómo volver a definir un método en un "javascript clase"
- 7. ¿Cómo puedo definir una variable en XAML?
- 8. ¿Puedo definir dinámicamente un método de Ruby que tome un bloque?
- 9. ¿Cómo puedo definir una función en Clojure?
- 10. cómo definir una clase en una sola línea?
- 11. ¿Qué método para definir en una clase de Ruby para proporcionar dup/clone para sus instancias?
- 12. ¿Cómo puedo definir una función de controlador de eventos en línea ActionScript en AddEvent Listener
- 13. undef - ¿Por qué quieres definir un método en rubí?
- 14. Definir método en relación activerecord
- 15. ¿Cómo puedo definir una interfaz de colección personalizada en Scala sin definir una implementación?
- 16. Método abstracto en Ruby
- 17. ¿Puedo eliminar un alias de método en Ruby?
- 18. ¿Cómo puedo definir y usar una variable en XAML para definir un color?
- 19. ¿Cómo puedo interceptar la llamada al método en ruby?
- 20. Ruby: ¿Cómo puedo definir un campo de fecha y hora en YAML?
- 21. ¿Cómo puedo definir y usar un ENUM en Objective-C?
- 22. ¿Cómo puedo encontrar dónde se declara un método Ruby?
- 23. ¿Cómo puedo definir una excepción para los saltos de línea en Vim?
- 24. ¿Cómo puedo definir constantes en un archivo separado en Perl?
- 25. ¿Definir alias de método en Python?
- 26. ¿Es posible definir un bloque con argumentos opcionales en Ruby?
- 27. ¿Es posible definir un método singleton de Ruby usando un bloque?
- 28. Ruby: ¿Definir un método dentro de otro método tiene algún uso real?
- 29. ¿Cómo puedo definir variables en LINQ?
- 30. ¿Es posible en Ruby definir un método cuyo nombre termine con: (dos puntos)?
Como puede ver en las respuestas, es posible definir un método de diferentes maneras en una sola línea, pero la pregunta es, ¿o sí? Cualquier definición debe escribirse de forma clara y limpia por razones de mantenimiento y legibilidad, de modo que si la línea única se vuelve difícil de manejar o confusa, extiéndala. Algunos lenguajes parecen alentar la codificación breve como una forma de ser codicioso, pero el estilo de codificación de Ruby alienta la elegancia, la legibilidad y el mantenimiento por encima de la perfección. Logre los tres primeros y nos inclinaremos ante usted. –