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