我找到了带有哈希分配的代码,如下所示:
@defeat = {r: :s, p: :r, s: :p}
# => {:r=>:s, :p=>:r, :s=>:p}
为什么将此哈希的键生成为符号?这是一个简短的做法吗?
defeat[:r] = :s
defeat[:p] = :r
defeat[:s] = :p
这种哈希风格有名字吗?
答案 0 :(得分:2)
A Hash可以使用其隐式形式轻松创建:
grades = { "Jane Doe" => 10, "Jim Doe" => 6 }
当您的键始终是符号时,哈希允许使用其他语法形式。而不是
options = { :font_size => 10, :font_family => "Arial" }
你可以把它写成:
options = { font_size: 10, font_family: "Arial" }
现在,在您的示例@defeat = {r: :s, p: :r, s: :p}
中,所有 键都是符号 。这就是为什么您的示例Hash
是一个有效的构造,它是从 1.9 引入的。
答案 1 :(得分:1)
当您使用散列样式{key:value}时,您实际上是在声明键的符号。像Arup的例子一样,{:key => value}与隐式表单是一回事。所以你随时使用:而不是=>在哈希中,您将创建一个符号作为键。
在您的示例中,您要为密钥和值创建符号。
{key: :value } # both are symbols