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

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

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

为什么factorylast_name的末尾都有冒号?

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

factoryHash键, :user是值。

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

Ruby 1.8语法:

 :factory => :user 

Ruby 1.9语法:

 factory: :user 

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

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

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

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

所以,当我们传递factory: :user ,我们真正在做的是传递{factory: :user} ,也写为{:factory => :user} 。 1.9语法旨在使{factory: "user"}更容易