在Ruby中,在Hash中使用标识符后的冒号是什么意思?

时间:2012-05-18 01:38:35

标签: ruby syntax hash

我正在学习Factory Girl,我看到了这段代码:

factory :post do
  association :author, factory: :user, last_name: "Writely"
end

为什么factorylast_name的结尾有冒号?

3 个答案:

答案 0 :(得分:34)

此上下文中的冒号表示文字哈希。

factoryHash键,:user是值。

替代语法为:factory => :user。他们的意思是一样的。

答案 1 :(得分:17)

Ruby 1.8语法:

:factory => :user

Ruby 1.9语法:

factory: :user

请注意,Ruby 1.8语法也适用于1.9。

答案 2 :(得分:0)

其他答案是正确的。关于这种新语法背后的基本原理有一些猜测。此更改可能与Javascript和其他语言如何处理对象文字表示法有关。或许,人们感到需要让红宝石更加符合这些语言处理对象创建的方式。

例如,在JavaScript中,我们可以这样做:

var person = {
    name: "John",
    age: 42,
    married: false
}

所以,当我们传递factory: :user时,我们真正要做的就是传递{factory: :user},也写为{:factory => :user}。 1.9语法旨在简化{factory: "user"}

之类的操作