Использование » # » в определении

#ruby #function

Вопрос:

Я понял, что это возможно иметь # в определении:

 def Foo#bar  "blah blah" end  

Но я не уверен, что это значит. Я ожидал , что метод экземпляра bar будет определен в классе Foo , но, похоже, это не так. Что это значит?

Ответ №1:

# начинается комментарий на ruby. Вы просто определяете вызываемый метод Foo .

(Обратите внимание, что Foo#bar это обычно используется для обозначения «метода bar экземпляра класса Foo «, но это не особенность синтаксиса Ruby!)

Комментарии:

1. @sawa вау, ты действительно заставил меня некоторое время думать, что это альтернатива определению этого внутри класса 🙂

2. @Дарт, Это было то, чего я хотел, и я попытался посмотреть, сработает ли это. Хахаха.

3. Нет. Вы можете определить метод класса с def Foo.bar помощью , но для того, чтобы создать метод экземпляра, я думаю, вам понадобится Foo.class_eval { def bar; ... end } .