Tengo un map
die entweder einen Wert ändert oder ihn auf null setzt. Ich möchte dann die Nulleinträge aus der Liste entfernen. Die Liste muss nicht beibehalten werden.
Dies ist mein derzeitiger Stand:
# A simple example function, which returns a value or nil
def transform(n)
rand > 0.5 ? n * 10 : nil }
end
items.map! { |x| transform(x) } # [1, 2, 3, 4, 5] => [10, nil, 30, 40, nil]
items.reject! { |x| x.nil? } # [10, nil, 30, 40, nil] => [10, 30, 40]
Ich bin mir bewusst, ich könnte einfach eine Schleife tun und bedingt in einem anderen Array wie dieses sammeln:
new_items = []
items.each do |x|
x = transform(x)
new_items.append(x) unless x.nil?
end
items = new_items
Aber es scheint nicht so idiomatisch zu sein. Gibt es eine nette Art und Weise, eine Funktion über eine Liste abzubilden, Entfernen/Ausschließen der nils wie Sie gehen?