Ответ 1
Двоеточие в этом контексте обозначает буквальный хэш.
factory
- это клавиша Hash
, :user
- это значение.
Альтернативный синтаксис :factory => :user
. Они означают одно и то же.
Я узнаю о Factory Девушка и я увидели этот код:
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 и, возможно, другие языки обрабатывают объектную литературу. Вероятно, потребность в том, чтобы привнести рубин в соответствие с тем, как эти языки обрабатывают создание объекта.
Например, в JavaScript мы можем:
var person = {
name: "John",
age: 42,
married: false
}
Итак, когда мы проходим factory: :user
, то, что мы действительно делаем, это передать {factory: :user}
, также написанный как {:factory => :user}
. Синтаксис 1.9 предназначен для облегчения выполнения чего-то вроде {factory: "user"}