Ruby on rails 在:某物和某物中放置冒号有什么区别

Ruby on rails 在:某物和某物中放置冒号有什么区别,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在努力理解:符号和文本之间的区别:关于冒号的位置。我的理解是,当我们使用:符号时,我们指的是这个对象以及它包含的任何内容,其中作为文本:用于为文本赋值,就像我们将其作为变量一样。这是正确的还是有人可以详细说明用法。谢谢。:不管是什么符号,你都把那部分做对了 使用散列时,在1.8x ruby中定义散列的方式如下: {:key => value, :another_key => another_value} 这就是hashrocket语法。在ruby 1.9x中,更改为: {key

我正在努力理解:符号和文本之间的区别:关于冒号的位置。我的理解是,当我们使用:符号时,我们指的是这个对象以及它包含的任何内容,其中作为文本:用于为文本赋值,就像我们将其作为变量一样。这是正确的还是有人可以详细说明用法。谢谢。

:不管
是什么符号,你都把那部分做对了

使用散列时,在1.8x ruby中定义散列的方式如下:

{:key => value, :another_key => another_value}
这就是hashrocket语法。在ruby 1.9x中,更改为:

{key: value, another_key: another_value}

有向后兼容性,仍将加载hashrocket语法。。。但是,在1.9中,'key:'是一个符号

the
{:key=>value}
是ruby中的旧哈希语法,现在我们有了一个更像json的新哈希语法

{:key => value}

{key: value}
我们都熟悉的一个老问题是:

old_hash = {:simon => "Talek", :lorem => "Ipsum"}
这一切都是美好的,但它可以更简单,更干净。看看Ruby 1.9样式,它有点像JSON:

new_hash = {simon: "Talek", lorem: "Ipsum"}
但现在你再仔细看看,会问,“以前钥匙是一个明确的符号,现在怎么了?”

你说得对,新的符号是最常见的散列形式的一种语法糖,所谓的符号到对象散列。如果在irb中执行此操作,您将看到ruby返回旧式散列,其中的符号用作键:

> new_hash = {simon: "Talek", lorem: "Ipsum"}
=> {:simon=>"Talek", :lorem=>"Ipsum"} 
如果您需要使用任意对象作为哈希键,您仍然必须按照传统方式进行


ref:

Symbol:value只出现在哈希表达式中作为一种缩短它的方式,但我没有发现很多人喜欢它。谢谢大家!你的上一个语句会引起混乱。我不认为
key:
在ruby中是一个符号,但是当这个语法出现在大括号中时,ruby会将它标识为一个符号。此外,提供hashrocket语法不仅仅是为了向后兼容。事实上,如果您想用非符号键定义散列,您需要依赖散列火箭语法。我想说,新的json风格语法更像是一种语法糖。