结肠位置有什么区别:东西和其他东西:

时间:2012-05-02 13:45:02

标签: ruby-on-rails ruby

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

2 个答案:

答案 0 :(得分:18)

:whatever是一个符号,你已经有了这一部分。

当您使用哈希时,这就是您在1.8x ruby​​中定义它的方式:

{:key => value, :another_key => another_value}

这称为hashrocket语法。在ruby 1.9x中,这改为:

{key: value, another_key: another_value}

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

答案 1 :(得分:17)

{: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:http://breakthebit.org/post/8453341914/ruby-1-9-and-the-new-hash-syntax