【发布时间】:2017-01-04 21:06:58
【问题描述】:
我有一个由两部分组成的问题,如果它令人困惑,我提前道歉。我正在尝试将用户输入放入一个空的哈希中。我知道你使用
第二部分:假设我只是循环他们相同的问题,直到满足条件。用户输入将成为价值。有没有办法让密钥根据用户输入自动更改?所以它看起来像: {str1 => "示例字符串", str2 => "示例字符串2", str3 => "示例字符串3"}
或者有没有办法让 ruby 自己分配一个键?
如果第二部分令人困惑,再次抱歉。我知道数组会更好,但我正在处理的小挑战是要求哈希。
【问题讨论】:
-
我的问题是您为什么要将其存储在哈希中?看来您并不真正关心密钥,为什么不将值存储在数组中?
-
关于您的第二个问题,如果用户提供了带有唯一数字部分的
arr = ["cat9", "dog12"],您可以编写如下内容:my_hash = arr.each_with_object({}) { |s,h| h["str#{ s[/\d+\z/] }"] = s } #=> {"str9"=>"cat9", "str12"=>"dog12"}。关于您的第一个问题,您可以在类Hash上定义一个方法<<,该方法将以您想要的方式运行:class Hash; def <<((k,v)); self[k] = v; end; end。然后对于上面的哈希my_hash,my_hash << ["str40", "pig40"]; hash #=> {"str9"=>"cat9", "str12"=>"dog12", "str40"=>"pig40"}。 -
欢迎来到 Stack Overflow。你可以改进你的问题。请阅读How to Ask,包括“如何以聪明的方式提问”链接。