Est-ce def greet; puts "hello"; end
le seul moyen de définir une méthode sur une seule ligne dans Ruby?
Est-ce def greet; puts "hello"; end
le seul moyen de définir une méthode sur une seule ligne dans Ruby?
Réponses:
Vous pouvez éviter d'utiliser des points-virgules si vous utilisez des parenthèses:
def hello() :hello end
Donnez simplement la nouvelle réponse complète:
En général, évitez les méthodes monolignes. Bien qu'ils soient assez populaires dans la nature, il existe quelques particularités dans leur syntaxe de définition qui rendent leur utilisation indésirable. En tout cas, il ne devrait pas y avoir plus d'une expression dans une méthode sur une seule ligne .
# 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
Les méthodes à corps vide constituent une exception à la règle.
# good
def no_op; end
def add a,b; a+b end
Le point-virgule est le terminateur d'instruction en ligne pour Ruby
Ou vous pouvez utiliser la define_method
méthode. (Edit: celui-ci est obsolète dans ruby 1.9)
define_method(:add) {|a,b| a+b }
Autrement:
define_method(:greet) { puts 'hello' }
Peut être utilisé si vous ne souhaitez pas entrer de nouvelle portée pour la méthode lors de sa définition.
define_method
a été "privatisé" dans Ruby 1.9
Encore une autre façon:
def greet() return 'Hello' end
return
ici car ce n'est pas une clause de garde.