На пути изучения программирования на Ruby вы можете столкнуться со многими трудностями и головокружительными проблемами. Понимание и знакомство с концепцией «я» может эффективно заложить основу для вашего будущего успеха.

Ключевое слово self в Ruby будет широко использоваться в методах экземпляра и методах класса. Иногда легко запутаться. Начнем с метода экземпляра. В качестве примера я возьму свой любимый аниме Покемон!

Сначала мы напишем класс, названный в честь Pokemon, затем мы можем начать создавать метод установки и получения внутри класса Pokemon. Ниже класса Pokemon мы можем использовать только что созданный метод для создания нашего любимого Pokemon. Размещение имени и уровня должно соответствовать методу инициализации. Мой любимый покемон - Чармандер, и я собираюсь назвать его «Драго», как показано на картинке ниже.

Затем мы начнем тренировать наших покемонов и смотреть, как они растут. Начнем набирать drago.get_trained в терминале. Каждый раз, когда мы запускаем эту строку drago.get_trained, уровень drago будет увеличиваться на 1. Вернемся к методу get_trained внутри метод self.level + = 1. «Я» здесь представляет собой самого драго, и мы можем получить доступ к уровню драго через «я» и добавить уровень на 1. Очень круто, правда?

Теперь мы продолжим исследовать принцип и использование себя для создания более сложных кодов. Например, позвольте нашему покемону развиваться!

Благодаря моим усилиям мой драго наконец превратился в чармелеона! 🐉 🔥

Так держать! ! Наконец, мой драго превратился в могущественного чаризарда! 🐲 🔥

Я считаю, что вы должны хорошо понимать основы использования себя. Но мы еще не закончили, мы все еще занимаемся классом метода. Но не волнуйтесь, использование self в методе класса и методе экземпляра очень похоже.

Я добавил еще несколько покемонов.

По мере увеличения числа моих покемонов я должен создать переменную экземпляра класса @@ all = [] для хранения. Ранее мы упоминали, что я представляет самого покемона, поэтому мы можем применить эту концепцию для его хранения. Каждый раз, когда мы добавляем покемона, @@ all ‹< self добавит каждого покемона в @@ all.

Тогда как нам получить доступ к покемонам внутри @@ all и просмотреть всех покемонов? Теперь нам нужно использовать метод класса для доступа к @@ all. Давайте создадим метод класса. 👇

Чтобы создать метод класса, нам нужно только добавить несколько вещей на основе метода экземпляра. Добавьте себя перед все. тогда «я» здесь больше не представляет каждого покемона. Самость здесь представляет собой весь класс покемонов.

Когда нам нужно получить доступ к методу класса, нам нужно ввести имя класса Pokemon.all в терминал. Теперь мы получаем доступ к только что созданному методу класса и просматриваем всех покемонов внутри @@ all. См. Рисунок ниже.

Gameshark / Секретный трюк : 😎

Когда self вызывается внутри метода экземпляра get_trained, self == drago.

Когда self вызывается рядом с именем метода экземпляра self.all, self == Pokemon (имя класса)