Wie kann ich überprüfen, ob eine Variable in Ruby definiert ist? Gibt es eine isset
-Typ Methode verfügbar?
Es ist erwähnenswert, dass die Variable, die auf nil
ist initialisiert.
Wie kann ich überprüfen, ob eine Variable in Ruby definiert ist? Gibt es eine isset
-Typ Methode verfügbar?
Verwenden Sie die defined?
Schlüsselwort ( Dokumentation ). Es wird ein String mit der Art des Elements zurückgegeben, oder nil
wenn sie nicht existiert.
>> a = 1
=> 1
>> defined? a
=> "local-variable"
>> defined? b
=> nil
>> defined? nil
=> "nil"
>> defined? String
=> "constant"
>> defined? 1
=> "expression"
Wie skalee kommentierte: "Es ist erwähnenswert, dass eine Variable, die auf null gesetzt ist, initialisiert wird."
>> n = nil
>> defined? n
=> "local-variable"
Wenn Sie eine Variable setzen wollen, wenn sie nicht existiert, und sie in Ruhe lassen wollen, wenn sie existiert, lesen Sie die Antwort von @danmayer (mit dem ||=
Operator) unten.
Hier ist eine weitere Kuriosität, die ich in Wenn Sie eine Variable in einem if-Block definieren, für die die Bedingung nie erfüllt ist, defined?
liefert immer noch true für eine Variable, die in diesem Block definiert ist!
Vielen Dank für diesen Beitrag! Ich bin ein Ruby/Rails-Anfänger und stieß gestern Abend auf diese Syntax, hatte eine harte Zeit herauszufinden, was es bedeutet. Sieht sehr praktisch aus!
Benutzen Sie einfach nicht ||=
mit booleschen Werten, damit Sie nicht den Schmerz der Verwirrung spüren.
Die korrekte Syntax für die obige Aussage lautet:
if (defined?(var)).nil? # will now return true or false
print "var is not defined\n".color(:red)
else
print "var is defined\n".color(:green)
end
ersetzend ( var
) mit Ihrer Variablen. Diese Syntax gibt einen true/false-Wert für die Auswertung in der if-Anweisung zurück.
@vol7ron - Das ist eine absolut gültige Syntax. Mit dem Aufruf von .nil?
ist idiomatischer, wie man sagt. Es ist eher "objektorientiert", ein Objekt zu fragen, ob es nil
als einen Vergleichsoperator zu verwenden. Keiner von beiden ist schwer zu lesen, also verwenden Sie denjenigen, der Ihnen hilft, mehr Produkte zu versenden.
Der Ruby-Style-Guide sagt: "Bevorzuge unless gegenüber if für negative Bedingungen". github.com/bbatsov/ruby-style-guide
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.