这个:value和this =>之间有区别吗? Rails的价值?

时间:2014-12-29 22:52:36

标签: ruby-on-rails erb

标题是什么。我一直在试图谷歌,但它很难说出来,所以谷歌知道我在寻找什么(特别是因为我不知道术语)。

3 个答案:

答案 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中也有效。

Whats the benefit of the newer syntax?