我有一个具有属性名称和数据的对象等等.我想创建使用名称作为键和数据(这是一个数组)作为值的哈希值.我不知道如何使用地图减少下面的代码.可能吗?
def fc_hash fcs = Hash.new self.forecasts.each do |fc| fcs[fc.name] = fc.data end fcs end
解决方法
使用
Hash[]
:
Forecast = Struct.new(:name,:data) forecasts = [Forecast.new('bob',1),Forecast.new('mary',2)] Hash[forecasts.map{|forecast| [forecast.name,forecast.data]}] # => {"mary"=>2,"bob"=>1}