Программирование на языке Ruby
Шрифт:
Мы можем определять собственные методы класса, как показано в разделе 11.1.1. Конечно, их функциональность не ограничивается конструированием — они могут выполнять любые операции, имеющие смысл именно на уровне класса.
В следующем далеко не полном фрагменте предполагается, что мы создаем класс для проигрывания звуковых файлов. Метод
Есть еще один способ объявить этот метод класса. В следующем фрагменте делается практически то же самое:
Единственная разница касается использования объявленных в классе констант. Если метод класса объявлен вне объявления самого класса, то эти константы оказываются вне области видимости. Например, в первом фрагменте метод
Не удивительно, что помимо методов класса есть еще и переменные класса. Их имена начинаются с двух знаков
Традиционный пример использования переменных класса - подсчет числа его экземпляров. Но они могут применяться всегда, когда информации имеет смысл в контексте класса в целом, а не отдельного объекта. Другой пример приведен в листинге 11.3.
Здесь переменная класса инициализируется до того, как впервые используется в методе класса. Отметим также, что мы можем обратиться к переменной класса из метода экземпляра, но обратиться к переменной экземпляра из метода класса нельзя. Немного подумав, вы поймете, что так и должно быть.
А если попытаться, что произойдет? Что если мы попробуем напечатать атрибут
В том, что на самом деле мы обращаемся вовсе не к переменной экземпляра класса
Мы столкнулись с переменной экземпляра класса (термин заимствован из языка Smalltalk). Дополнительные замечания на эту тему приводятся в разделе 11.2.4.
В листинге 11.4 иллюстрируются все аспекты этой ситуации.
Тринадцатый IV
4. Видящий смерть
Фантастика:
боевая фантастика
попаданцы
рейтинг книги
Тарзан (Сборник рассказов)
Тарзан
Приключения:
природа и животные
рейтинг книги
История ислама. Исламская цивилизация от рождения до наших дней
Научно-образовательная:
история
культурология
религиоведение
рейтинг книги
Петербург - нуар. Рассказы
Проза:
современная проза
рейтинг книги
Гильдия
Гильдия
Фантастика:
боевая фантастика
рейтинг книги
Арестант
7. Бандитский Петербург
Детективы:
боевики
рейтинг книги
Эзотерический мир. Семантика сакрального текста
Религия и эзотерика:
эзотерика
рейтинг книги
Виконт. Книга 2. Обретение силы
2. Псевдоним `Испанец`
Фантастика:
боевая фантастика
попаданцы
рпг
рейтинг книги
Атосса. Император
Проза:
историческая проза
рейтинг книги
Я снова царь. Книга XXXIII
33. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
рейтинг книги
Город золотых теней
1. Иноземье
Фантастика:
научная фантастика
рейтинг книги