数组中键的字符串插值?
问题描述:
我应该做的:数组中键的字符串插值?
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对添加到现有哈希中。
另一件事,在这个函数中发生的事情是,我有一个名为“分数”的空数组,填充候选+分数哈希值,并在最后返回数组分数,是否有某种语法糖或为此?
答
这里是要合并的方式,以及清洁器的方法来创建scores
:
scores = candidates.map do |candidate|
candidate.merge({attribute_name => stuff})
end
这使用Hash#merge
和Array#map
(假设candidates
是Array
)。
Ruby的语法糖包装方法参数为Hash
,如果您在它们之间成对写入=>
。因此,第二行也可能是这样的:
candidate.merge(attribute_name => stuff)
而且,如果attribute_name
是String
,但按键的休息candidate
是Symbol
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
为什么不只是'.merge(attribute_name => stuff)'? –