Ist def greet; puts "hello"; end
die einzige Möglichkeit, eine Methode in Ruby in einer Zeile zu definieren?
Ist def greet; puts "hello"; end
die einzige Möglichkeit, eine Methode in Ruby in einer Zeile zu definieren?
Antworten:
Sie können die Verwendung von Semikolons vermeiden, wenn Sie Klammern verwenden:
def hello() :hello end
Geben Sie einfach die vollständige neue Antwort:
Vermeiden Sie im Allgemeinen einzeilige Methoden. Obwohl sie in freier Wildbahn etwas beliebt sind, gibt es einige Besonderheiten in ihrer Definitionssyntax, die ihre Verwendung unerwünscht machen. Auf jeden Fall sollte eine einzeilige Methode nicht mehr als einen Ausdruck enthalten .
# 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
Eine Ausnahme von der Regel sind Leerstellenmethoden.
# good
def no_op; end
def add a,b; a+b end
Das Semikolon ist der Terminator für Inline-Anweisungen für Ruby
Oder Sie können die define_method
Methode verwenden. (Bearbeiten: Dieser ist in Ruby 1.9 veraltet)
define_method(:add) {|a,b| a+b }
Ein anderer Weg:
define_method(:greet) { puts 'hello' }
Kann verwendet werden, wenn Sie beim Definieren keinen neuen Bereich für die Methode eingeben möchten.
define_method
wurde in Ruby 1.9 "privatisiert"
Noch ein anderer Weg:
def greet() return 'Hello' end
return
hier nicht, da es keine Schutzklausel ist.