标题是什么。我一直在试图谷歌,但它很难说出来,所以谷歌知道我在寻找什么(特别是因为我不知道术语)。
答案 0 :(得分:4)
在key: value
字面值中使用Hash
语法时,密钥始终变为Symbol
:
{foo: "bar"}.keys[0].class # => Symbol
使用key => value
语法时,密钥可以是任何类型(包括Symbol
):
{:foo => "bar"}.keys[0].class # => Symbol
{1 => "bar"}.keys[0].class # => Fixnum
答案 1 :(得分:1)
“hashrocket”语法=>
用于匹配散列中的任何键值对。散列键值对:
的较新(和较短)语法只能用于符号键。
{foo: bar}
相当于:
{:foo => bar}
一般来说,如果哈希中的所有键都是(或应该是)符号,那么我会建议使用新语法,因为它更短,读取更容易
{a: 1, b: 2}
但是,如果任何键不是符号,那么我建议使用更古老,更灵活的语法:
{"what" => 3, :frequency => 4.43, kenneth => "Bob"}
答案 2 :(得分:0)
this: value
是ruby 1.9.3以后的散列文字的新语法。
:this => value
是较旧的语法;并且在更新版本的ruby中也有效。