Bei der Programmierung in Ruby habe ich oft Aufgaben wie die folgenden:
%Vor% Mit diesen Zuweisungen möchte ich die Ausgabe einer Funktion zuweisen, aber wenn sie nil
zurückgibt, möchte ich den Inhalt der Variablen behalten. Ich weiß, dass es bedingte Zuweisungen gibt, aber weder ||=
noch &&=
können hier verwendet werden. Der kürzeste Weg, den ich gefunden habe, um die obige Aussage zu beschreiben, ist
Gibt es einen besseren / kürzeren Weg, dies zu tun?
Ich glaube nicht, dass es etwas besseres gibt als das letzte Snippet, das du gezeigt hast, aber beachte, dass or
für die Flusskontrolle verwendet wird, benutze stattdessen ||
:
Es ist normalerweise besser, neuen Namen neue Werte zuzuweisen, der resultierende Code ist leichter zu verstehen und zu debuggen, da Variablen / Symbole den gleichen Wert im gesamten Bereich haben:
%Vor%Ich würde nur Klammern hinzufügen
(a = b) unless b.nil?
(a = b) if b
ist minderwertig, denn wenn b falsch ist, bleibt a wie zuvor
Beachten Sie, dass dies b zweimal auswertet. Wenn b eine Funktion mit Nebeneffekten ist (z. B. das Ändern von Variablen außerhalb des Bereichs oder des Drucks), wird dies zweimal durchgeführt. Um dies zu vermeiden, müssen Sie
verwenden
temp = b; (a = temp) unless temp.nil?
(was natürlich in zwei Teile aufgeteilt werden kann)
temp = b
(a = temp) unless temp.nil?
Tags und Links ruby variable-assignment