Prüfen, ob eine Variable in Ruby nicht Null und nicht Null ist
Ich bin mit dem folgenden code zu überprüfen, ob eine variable nicht null und nicht null
if(discount != nil && discount != 0)
...
end
Gibt es einen besseren Weg, dies zu tun?
InformationsquelleAutor der Frage hectorsq | 2008-10-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor der Antwort Dejan Simic
Hütet Euch vor den üblichen Haftungsausschlüssen, die... große macht/Verantwortung, monkey-patching führt zur dunklen Seite etc.
InformationsquelleAutor der Antwort madlep
ok, nach 5 Jahre vergangen....
InformationsquelleAutor der Antwort rewritten
InformationsquelleAutor der Antwort Dejan Simic
Von Ruby 2.3.0 weiter, können Sie kombinieren die safe navigation operator (
&.
) mitNumeric#ungleich null?
.&.
zurücknil
wenn die Instanz warnil
undnonzero?
- wenn die Nummer war0
:Oder postfix:
InformationsquelleAutor der Antwort ndn
InformationsquelleAutor der Antwort Raimonds Simanovskis
Könnte man dies tun:
Die Reihenfolge ist hier wichtig, denn wenn
discount
istnil
dann wird es nicht haben einezero?
Methode. Ruby ' s short-circuit-evaluation sollte verhindern, dass Sie versuchen, zu bewertendiscount.zero?
jedoch, wenndiscount
istnil
.InformationsquelleAutor der Antwort Jeremy Ruten
Können Sie konvertieren Sie Ihre leere Zeile, um integer-Wert und check null?.
InformationsquelleAutor der Antwort oivoodoo
update, es wird
false
fürdiscount = false
InformationsquelleAutor der Antwort rubyprince
Wenn wir passieren "" es wird false zurückgegeben, in der Erwägung, dass leere? gibt true zurück.
Dasselbe ist der Fall, wenn Daten = false
leer? gibt true zurück, nil, false, leer, oder ein whitespace-Zeichen string.
So ist es besser, verwenden Sie leere? Verfahren zur Vermeidung von leeren string als gut.
InformationsquelleAutor der Antwort Saroj
Können Sie die Vorteile der
NilClass
zur Verfügung gestellt#to_i
Methode, die return null fürnil
Werte:Wenn
discount
werden können gebrochene zahlen, die Sie verwenden können#to_f
statt, um zu verhindern, dass die Zahl wird auf null gerundet.InformationsquelleAutor der Antwort Dave G-W
Beim Umgang mit einem Datenbank-Datensatzwie ich zu initialisieren, alle leeren Werte mit 0, unter Verwendung der Migrations-Helfer:
InformationsquelleAutor der Antwort pastullo
Könnten Sie initialisieren Rabatt auf 0, solange Ihr code ist garantiert nicht zu versuchen und verwenden Sie es, bevor es initialisiert wird. Das würde das entfernen eines check ich nehme an, ich kann nicht an nichts anderes denken.
InformationsquelleAutor der Antwort Ed S.
InformationsquelleAutor der Antwort Abhinay Reddy Keesara
Ich glaube, das folgende ist gut genug für ruby-code. Ich glaube nicht, ich könnte schreiben Sie einen unit-test zeigt keinen Unterschied zwischen diesem und dem original.
InformationsquelleAutor der Antwort Jeff Waltzer