Überprüfung auf null-Zeichenfolge vor der Verkettung
Diese Frage ist ähnlich zu einer MENGE von Fragen, aber keine solche Möglichkeit ist es alles eine doppelte. Diese Frage ist über die string-Verkettung und schreiben besseren code mit weniger als es ist für die Prüfung der null - /- null.
Derzeit habe ich:
file.puts "cn: " + (var1.nil? ? "UNKNOWN" : var1)
Welche gut funktioniert, aber sieht nicht gut aus. Was ist eine bessere Weise, dies zu schreiben, in ruby so, dass ich die Prüfung für null und nicht zu verketten, es
InformationsquelleAutor Zombies | 2010-02-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies tun:
oder, identisch, wenn Sie bevorzugen:
oder mein Favorit, wobei ich denke, dass die meisten idiomatischen ruby:
false
Sie werden sehen, "unbekannt" statt.InformationsquelleAutor Peter
Verwenden
join
zum hinzufügen von Zeichenfolgen, die möglicherweisenil
.Den
join
wird sich nicht beschweren, wenn es einnil
Beispiel:
Jedoch, wenn Sie sich mit nichts, aber eine leere Zeichenfolge, wie ein Unterstrich, erhalten Sie eine join-String für die
nil
Wert:Dieses Problem zu beheben, verwenden Sie
.compact
zu entfernen, dienil
Werte aus derArray
bevor er:das problem löst
Danke. Aktualisiert die Antwort, um diese zu reflektieren.
InformationsquelleAutor user566245
Ich würde das tun, was Peter vorgeschlagen, unter der Annahme, dass
false
war kein Gültiger Wert fürvar1
, undvar1
war garantiertnil
oder ein string sein. Könnte man auch extrahieren, die Logik in eine Funktion:to_s
ist nur notwendig, wennvar1
nicht garantiert werden nil oder ein string sein. Alternativ, wenn Sie:es wird eine implizite
to_s
auf das Ergebnisdisplay_value
InformationsquelleAutor Brad G.
Ruby 2.4.1,
to_s
löst für beidenil
und"Hello"
. Sovar1.to_s
sollte ausreichen.InformationsquelleAutor Julien Lamarche
InformationsquelleAutor Farrel
Da die
"cn: "
Teil ist rein ästhetisch und daher (noch mehr?) Thema zu ändern, um zukünftige Präsentation Richtlinien, würde ich empfehlen, mit join;Vielleicht so eine Funktion, wie bereits erwähnt - Semantik sind die gleichen, nur die Methode-Namen/keywords verändert haben;
InformationsquelleAutor Zach