Резюме: Почему мы инициализируем новые заторы без знака «=»?
Подробности:
Я написал специальный плагин 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
который никак не упоминается и ничего не делает.