Назад | Перейти на главную страницу

Создание плагина Chef Ohai - создание нового пюре

Резюме: Почему мы инициализируем новые заторы без знака «=»?

Подробности:

Я написал специальный плагин Ohai, чтобы данные нашей компании были доступны для использования по различным рецептам. Это прекрасно работает, но я не совсем понимаю процесс создания нового месива. в Opscode Ohai docв разделе «Использование месива» они создают месиво следующим образом

canhas Mash.new

это работает. Но почему это не так

canhas = Mash.new

так что каким-то образом, без знака равенства, «canhas» присваивается новое заторное масло. Если я добавлю знак равенства, мой плагин Ohai не будет работать - вложенного элемента mash / hash "canhas" нет.

Ruby имеет гибкий (свободный) синтаксис для вызова методов и функций. Эти три строки эквивалентны внутри класса:

self.canhas(Mash.new)
canhas(Mash.new)
canhas Mash.new

Когда ты пишешь canhas Mash.new, вы вызываете метод класса на self называется canhas и проходя это Mash.new как аргумент. С другой стороны, когда вы пишете canhas = Mash.new, вы создаете новую локальную переменную с именем canhas который никак не упоминается и ничего не делает.