В Ruby есть смысл двоеточия после идентификатора в хэше?
Я узнаю о Factory Девушка и я увидели этот код:
factory :post do
association :author, factory: :user, last_name: "Writely"
end
почему factory и last_name имеют двоеточие в конце?
Ответ 1
Двоеточие в этом контексте обозначает буквальный хэш.
factory - это клавиша Hash, :user - это значение.
Альтернативный синтаксис :factory => :user. Они означают одно и то же.
Ответ 2
Синтаксис Ruby 1.8:
:factory => :user
Синтаксис Ruby 1.9:
factory: :user
Обратите внимание, что синтаксис Ruby 1.8 также работает в версии 1.9.
Ответ 3
Другие ответы правильные. Были некоторые предположения относительно обоснования этого нового синтаксиса. Это изменение может иметь какое-то отношение к тому, как Javascript и, возможно, другие языки обрабатывают объектную литературу. Вероятно, потребность в том, чтобы привнести рубин в соответствие с тем, как эти языки обрабатывают создание объекта.
Например, в JavaScript мы можем:
var person = {
name: "John",
age: 42,
married: false
}
Итак, когда мы проходим factory: :user, то, что мы действительно делаем, это передать {factory: :user}, также написанный как {:factory => :user}. Синтаксис 1.9 предназначен для облегчения выполнения чего-то вроде {factory: "user"}