数组中键的字符串插值?

问题描述:

我应该做的:数组中键的字符串插值?

attribute_name = "key_i_want" 
scores = [] 

candidates.each do |candidate| 
    scores.push candidate.attributes.merge(:{#attribute_name} => {stuff}) 
end 

scores 

我希望发生的是,类别名称,在这种情况下有钥匙“key_i_want”,被添加到哈希值,并将其值会成为“东西”。是否有某种“内插字符串”函数,我可以将哈希k-v对添加到现有哈希中。

另一件事,在这个函数中发生的事情是,我有一个名为“分数”的空数组,填充候选+分数哈希值,并在最后返回数组分数,是否有某种语法糖或为此?

+1

为什么不只是'.merge(attribute_name => stuff)'? –

这里是要合并的方式,以及清洁器的方法来创建scores

scores = candidates.map do |candidate| 
    candidate.merge({attribute_name => stuff}) 
end 

这使用Hash#mergeArray#map(假设candidatesArray)。

Ruby的语法糖包装方法参数为Hash,如果您在它们之间成对写入=>。因此,第二行也可能是这样的:

candidate.merge(attribute_name => stuff) 

而且,如果attribute_nameString,但按键的休息candidateSymbol S,使用String#to_sym使得得到Hash都会有一致的钥匙:

candidate.merge({attribute_name_string.to_sym => stuff}) 

是否有某种“内插字符串”函数,其中我可以将哈希k-v对添加到现有哈希。

无需插值

这样做: -

merge(attribute_name => stuff) 

另一件事,会发生什么在这个功能是我有一个所谓的“分数”空阵,与候选人填补起来+得分散列和回报阵列在最后得分,是否有某种语法糖或某种东西?

attribute_name = "key_i_want" 
candidates.each_with_object([]) do |candidate,scores| 
    scores.push candidate.attributes.merge(attribute_name => stuff) 
end