Подтвердить что ты не робот

В Ruby есть смысл двоеточия после идентификатора в хэше?

Я узнаю о Factory Девушка и я увидели этот код:

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

почему factory и last_name имеют двоеточие в конце?

4b9b3361

Ответ 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"}