我有两个问题,如果有任何疑惑,请提前谅解。我正在尝试将用户输入放入一个空哈希表中。我知道对于数组,您可以使用<<将信息推送到其中。是否有相当于此的哈希等效项?
第二部分:假设我只是循环同样的问题,直到满足某个条件。用户输入将是值。是否有一种方法/方法可以根据用户输入自动更改键?所以它看起来可能是这样的: {str1 => "示例字符串",str2 => "示例字符串2",str3 => "示例字符串3"}
或者是否有一种方式让Ruby自己分配一个键?
如果第二部分仍然不清楚,请再次道歉。我知道数组会更好,但我正在解决一个要求使用哈希表的小挑战。
第二部分:假设我只是循环同样的问题,直到满足某个条件。用户输入将是值。是否有一种方法/方法可以根据用户输入自动更改键?所以它看起来可能是这样的: {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"}
。 - Cary Swoveland