如何在每个Hash中添加字符串

时间:2017-01-11 23:31:56

标签: ruby-on-rails ruby hash each

x = "one two"
y = x.split

hash = {}

y.each do |key, value|
  hash[key] = value
end
print hash

结果是:one =>零,两个=>零

我想做一个"一个" - 键,"两个" - 价值,但如何做到这一点?

它可能看起来像这样:"一个" => " 2"

2 个答案:

答案 0 :(得分:3)

y是一个数组,因此在块key中是项目本身('one','two'),值始终为nil。

您可以使用splat运算符*

将数组转换为哈希值

Hash[*y]

答案 1 :(得分:0)

更快一点的方法:

:nth-child

如果您正在寻找更通用的解决方案,其中x可能包含更多元素,请考虑以下内容:

x="one two"
Hash[[x.split]]

或者,如果您真的感觉很好看,请尝试使用inject:

hash = {}
x="one two three four"
x.split.each_slice(2) do |key, value| # each_slice(n) pulls the next n elements from an array
  hash[key] = value
end

hash