我正在努力理解 :symbol 和 text: 之间关于冒号位置的区别。我的理解是,当我们使用 :symbol 时,我们指的是这个对象以及它包含的任何内容,其中 text: 用于为文本赋值,就像我们为变量一样。这是正确的还是有人可以详细说明用法。谢谢你。
问问题
4929 次
2 回答
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:' 是一个符号
于 2012-05-02T13:49:16.360 回答
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"}
如果您需要将任意对象作为散列键,您仍然必须使用老式方法。
参考:http ://breakthebit.org/post/8453341914/ruby-1-9-and-the-new-hash-syntax
于 2012-05-02T13:50:56.983 回答