Несколько дней назад у меня была первая оценка проекта. Первая часть оценки прошла хорошо. Я смогла ответить на все вопросы, которые Джейк задавал мне. Я потратил чуть больше недели на подготовку… Я убедился, что знаком со всеми концепциями.

Тем не менее, мне было трудно с живым кодированием. Я замерз. Я был в классе парсинга моего проекта, и меня попросили изменить метод класса на метод экземпляра. По какой-то причине я не мог изменить свой метод. Я точно знал, что должен был сделать, но просто не мог заставить себя сделать это. Я даже сказал вслух:

Методы класса — это методы, которые вызываются в классе, а методы экземпляра — это методы, которые вызываются в экземпляре класса. Разница в слове «я».

Выше приведены два метода, которые относятся к классу Beach. Первый метод — это метод класса, а второй — метод экземпляра. Единственная разница в синтаксисе — это self. в первом методе. В Ruby self является контекстно-зависимым ключевым словом.

Есть несколько способов вызвать класс в Ruby. Сначала мы рассмотрим, как вызывать класс с помощью метода класса.

Beach.print_beachвыводит «Пляж Ла-Хойя»

Beach.print_beach_location выдает ошибку неопределенного метода

Разница в том, что когда вы объявляете и вызываете класс, когда вы используете метод класса, вы можете просто использовать точечный синтаксис и запустить этот метод. В то время как с методом экземпляра вы должны создать новый экземпляр этого класса.

Мы можем создать новый экземпляр класса beach, который будет хранить его в переменной b. Когда мы запустим программу, мы получим «La Jolla».

Если я попытаюсь запустить b.print_beach, я получу ошибку неопределенного метода.

Метод класса может быть вызван в самом классе. Метод класса можно вызвать для Beach.print_beach или любого другого имени. Метод экземпляра потребует от вас создания нового экземпляра этого класса, чтобы иметь возможность вызывать его.

Есть и другой способ, который сработает. Приведенная выше строка даст нам тот же результат. Однако традиционный способ — сохранить экземпляр в переменной, и эту переменную можно будет использовать для его вызова.

Методы класса используются, когда функциональность, которую вы пишете, не принадлежит экземпляру этого класса. Методы экземпляра используются, когда вам нужно воздействовать на конкретный экземпляр класса.