Ruby推送到哈希

时间:2016-08-28 21:36:30

标签: ruby hash

我有两个问题,如果它完全混淆,我会提前道歉。我试图将用户输入放入空哈希中。我知道使用数组你使用<<将信息推送给它。是否有与此相当的哈希值?

第二部分:说我只是循环了同样的问题,直到满足条件。用户输入将是值。有没有一种方法/方法可以根据用户输入自动更改密钥?所以它看起来像:          {str1 => "示例字符串",str2 => "示例string2",str3 => "示例string3"}

或者有没有办法让ruby自己分配密钥?

如果第二部分令人困惑,请再次抱歉。我知道阵列会更好,但我正在努力的小挑战是要求哈希。

5 个答案:

答案 0 :(得分:2)

将元素添加到ruby hash store(key, value)

的另一种方法
hash = {}
hash.store("first", 42)
hash #=> {"first"=>42}

答案 1 :(得分:0)

使用数组,您可以使用<<来推送单个元素。

使用哈希,您不是跟踪一个元素而是跟踪两个元素(键和值)。

例如:

my_key = "foo"
my_val = "bar"
my_hash = {}
my_hash[key] = val

当然,你可以循环完成。

我建议RubyMonk了解更多相关信息,但他们的网站已关闭。所以我可以推荐显示一些示例的this gist,或者只是阅读任何ruby教程的Hash部分。

答案 2 :(得分:0)

以下是添加到Hash

的两种方法
hash[str1] = "example string"
hash.merge!(str1 => "example string")

答案 3 :(得分:0)

如果您不关心密钥的索引,因为哈希本质上是一个键/值存储,您可能需要Set

require 'set'

set = Set.new

set << gets.chomp

一个集合就像一个无密钥散列,它是一个无序集合的东西,但有另一个好处,即集合中元素的查找速度很快,并且它们也会自动单独使用,添加相同的内容事情两次没有效果。

这里的替代方法是在Hash中放入一些值,将值作为键,将任何其他值作为占位符:

values = { }

values[input.gets] = true

这就像一个套装,但如果你不关心价值观,它可能效率较低。

答案 4 :(得分:0)

好的,它不是阵列所以&#39;&lt;&lt;&lt;&#无法工作。

你应该用这个:

your_hash = {}
hash_key = "x"
hash_value = "y"
your_hash[:hash_key] = hash_value

全部。