Was ich versuche zu tun ist eine Liste von Spalten zu geben, erhalten Sie eine Reihe von Spaltenformaten. Ich habe ein Array von Spaltennamen, und a hat, wo der Schlüssel der Spaltenname ist und der Wert das Format ist, das die Spalte benötigt. Wenn im Hash für eine bestimmte Spalte kein Wert vorhanden ist, muss sie im resultierenden Array nicht vorhanden sein.Wie kann ich ein Array mit einem Hash übersetzen?
report_columns = ["val1", "val2", "subtotal",
"othertotal", "grand_total", "moar_total"]
column_formats = {"grand_total" => @highlight_money,
"subtotal" => @money}
ich tun kann es leicht mit diesem Code:
Gegeben
datatype_array = []
report_columns.each {|col| datatype_array << column_formats[col] }
# do stuff with datatype_array
Aber das ist Rubin. Es gibt einen prägnanteren Weg, dies zu tun! Bitte lassen Sie mich wissen, welche magische Methode mir fehlt.
Ich sehe Raum nicht für eine Verbesserung oder sogar eine enge Sekunde. –
FWIW Ruby 2.3 hat 'Hash # to_proc', also können Sie' report_columns.map (& column_formats) 'machen. –
Und ohne 'Hash # to_proc' können Sie 'report_columns.map (& column_formats.method (: [])) '' tun –