如果 ENV[] 是一个类似哈希的对象(根据http://ruby-doc.org/core-2.0/ENV.html),为什么我不能调用 .slice(*keys) 呢?将特定键值对从环境中提取到另一个哈希中的最佳方法是什么?
问问题
178 次
2 回答
4
因为哈希上没有 slice 方法。如果您想要 ENV 的密钥,您可以调用:
ENV.keys
如果您想将一个值复制到一个新的哈希值,您可以调用:
# ex. Copying over the PATH variable from ENV hash.
hash = {}
hash[:path] = ENV["PATH"]
有关 ruby 哈希的更多信息,请阅读 hash 和 enumerable 的文档:
于 2013-10-03T04:20:38.743 回答
2
假设您有一组要获取的 env 变量的键:
keys_wanted = %w{key1 key2 etc}
使用values_at
,zip
和Hash[]
您可以使用values_at
来获取相应值的数组:
values_wanted = ENV.values_at(*keys_wanted)
然后您可以将其与密钥一起压缩到一个新的哈希中:
Hash[keys_wanted.zip(values_wanted)]
使用select
这更简单一些,但缺点是必须在 keys_wanted 数组中搜索每个键。
ENV.select {|key| keys_wanted.include? key }
文档:
于 2013-10-03T05:21:40.937 回答