¿Es def greet; puts "hello"; end
la única forma de definir un método en una línea en Ruby?
¿Es def greet; puts "hello"; end
la única forma de definir un método en una línea en Ruby?
Respuestas:
Puede evitar la necesidad de usar punto y coma si usa paréntesis:
def hello() :hello end
Simplemente dé la respuesta nueva y completa:
En general, evite los métodos de una sola 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, no debería haber más de una expresión en un método de una sola línea .
# 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 cuerpo vacío.
# good
def no_op; end
def add a,b; a+b end
El punto y coma es el terminador de instrucciones en línea para Ruby
O puedes usar el define_method
método. (Editar: este está en desuso en ruby 1.9)
define_method(:add) {|a,b| a+b }
De otra manera:
define_method(:greet) { puts 'hello' }
Puede usarse si no desea ingresar un nuevo alcance para el método mientras lo define.
define_method
ha sido "privatizado" en Ruby 1.9
Otra forma más:
def greet() return 'Hello' end
return
aquí ya que no es una cláusula de protección.