Я очень смущен. В «Программе Ruby book» говорится: «приемник проверяет определение метода в своем классе»Вызов метода экземпляра в классе в Ruby
Таким образом, объект класса хранит все методы экземпляра. Тогда почему я не могу вызвать метод экземпляра из класса?
Например
Class ExampleClass
def example_method
end
example_method
end
Я не могу назвать example_method внутри ExampleClass.
Однако если определить метод в верхнем уровне, как это:
class ExampleClass
def example_method
end
end
def example_method1
end
example_method1
Тогда я могу назвать метод верхнего уровня example_method1.
Не высший уровень также класс? Почему он отличается от метода вызывающего экземпляра из ExampleClass?
Метод экземпляра должен быть вызван * на экземпляре *. Если у вас его нет, вы должны создать его. Давид имеет здесь верный ответ. – tadman
Чтобы ответить на ваш вопрос о том, почему поведение отличается на верхнем уровне, я рекомендую прочитать [What is the Ruby Top-Level?] (Https://banisterfiend.wordpress.com/2010/11/23/what-is -the-ruby-top-level /) – Ajedi32
@ Ajedi32 Большое вам спасибо за ссылку на статью.Таким образом, верхний уровень действительно «двойной природы» :) – meizin