我正在学习工厂女孩,我看到了这段代码:
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"}