我有两个问题,如果它完全混淆,我会提前道歉。我试图将用户输入放入空哈希中。我知道使用数组你使用<<将信息推送给它。是否有与此相当的哈希值?
第二部分:说我只是循环了同样的问题,直到满足条件。用户输入将是值。有没有一种方法/方法可以根据用户输入自动更改密钥?所以它看起来像: {str1 => "示例字符串",str2 => "示例string2",str3 => "示例string3"}
或者有没有办法让ruby自己分配密钥?
如果第二部分令人困惑,请再次抱歉。我知道阵列会更好,但我正在努力的小挑战是要求哈希。
答案 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
全部。