在Ruby中,在Hash中使用标识符后冒号是什么意思?
我正在学习Factory Girl,我看到了这段代码:
factory :post do association :author, factory: :user, last_name: "Writely" end
为什么factory
和last_name
的末尾都有冒号?
在此上下文中的冒号表示字面哈希。
factory
是Hash
键, :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"}
更容易