我要做的是提供一个列列表,获取一系列列格式。我有一个列名称数组,其中键是列名称,值是列所需的格式。如果给定列的散列中没有值,则结果数组中的值必须为nil。
假设:
report_columns = ["val1", "val2", "subtotal",
"othertotal", "grand_total", "moar_total"]
column_formats = {"grand_total" => @highlight_money,
"subtotal" => @money}
我可以使用此代码轻松完成:
datatype_array = []
report_columns.each {|col| datatype_array << column_formats[col] }
# do stuff with datatype_array
但这是红宝石。有一个更简洁的方法来做到这一点!请让我知道我错过了什么神奇的方法。
答案 0 :(得分:2)
您首次尝试应该是一个简单的map
,而不是累积到数组上的each
。
datatype_array = report_columns.map { |c| column_formats[c] }
您还可以将列数组展开为Hash#values_at
,这需要多个键名作为单独的参数:
datatype_array = column_formats.values_at(*report_columns)