Wie können Sie ein Array in Ruby, die nur eine Variable verwendet, wenn es existiert, und sonst nil
an ihrer Stelle verwendet. Mit der bedingten Logik innerhalb des Array-Konstruktors.Konstruieren Sie ein Ruby-Array mit bedingter Logik innerhalb
Vereinfachtes Beispiel:
a = 1
c = 3
arr = [a, b || nil, c]
Ich habe eine Reihe unterschiedlicher Art und Weise versucht, aber sie arbeiten nicht so fühle ich mich wie grundlegende hier etwas fehlt bin.
(b || nil)
b ? b : nil
b.nil? ? nil : b
Ist das möglich?
Kontext: Dieser Array-Konstruktor wird innerhalb einer Schleife verwendet, die von mehreren verschiedenen Modellen verwendet wird. Einige Modelle haben das b
Attribut und andere nicht, was es schwierig macht, die Logik außerhalb zu extrapolieren.
Warum würden 'b' nicht existieren? Das ist wirklich eine ungewöhnliche Sache in Ruby-Code zu sehen. – tadman
Sie sagen beide "verwendet eine Variable, wenn es existiert" und "Einige Modelle haben das Attribut" b "und einige nicht". Die erste besagt, dass "b" eine Variable ist, die zweite besagt, dass "b" ein Methodenaufruf ist, was ist das? –
Das reale Beispiel ähnelt eher @ @ instance.attribute_b. Die Methode mit dieser Logik iteriert Abfrageergebnisse für mehrere verschiedene Modelle (separat); Einige der Modelle haben kein 'attribute_b'. –