【问题标题】:Ruby(Chef) - Convert hash into arrayRuby(Chef) - 将哈希转换为数组
【发布时间】:2026-01-05 14:20:05
【问题描述】:
我有一本带有哈希的厨师食谱。
foo = {
'herp' => 42,
'derp' => 84
}
我有一个只能取数组的 LWRP 资源(bar)
iis_root 'some string' do
bar []
end
如何将 'foo' 转换为数组,以便在资源 'bar' 中使用
寻找这样的东西:
[ "herp=42","derp=84"]
【问题讨论】:
标签:
arrays
ruby
hash
chef-infra
【解决方案1】:
bar = foo.map{ |e| e.join("=")}
=> ["herp=42", "derp=84"]
【解决方案2】:
您可以像这样遍历哈希并将其转换为数组。
ary = Array.New
foo.each do |key, value|
ary << key + "=" + value
end
这将创建您要查找的数组。
【解决方案3】:
您可以使用map:
foo.map { |key, value| key + "=" + value.to_s}
=> ["herp=42", "derp=84"]
【解决方案4】:
OscillatingMonkey 答案正确,但改动很少:
对于主题启动器,此代码完全符合您的需要。
bar = Array.new([])
foo.each do |key, value|
bar << key + "=" + value.to_s
end
=> ["herp=42", "derp=84"]
【解决方案5】:
我只会使用 map 和字符串插值:
foo.map { |k, v| "#{k}=#{v}" }
#=> ["herp=42", "derp=84"]