Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Классы и объекты
Атрибуты
Пустой класс не слишком полезен. Чтобы объект мог нести собственные
данные, классу дают атрибуты. Атрибут объявляется внутри класса
ключевым словом has:
class Dog {
has $.name;
has $.age;
}Каждый объект класса получает собственную копию этих атрибутов. Их
значения задаются при создании объекта: они передаются в
new как именованные аргументы:
class Dog {
has $.name;
has $.age;
}
my $rex = Dog.new(name => 'Rex', age => 3);Запись $. в has $.name делает сразу две
вещи: объявляет атрибут и создаёт одноимённый метод — аксессор,
— который возвращает значение атрибута:
say $rex.name; # Rex
say $rex.age; # 3Разные объекты хранят собственные значения, независимо друг от друга:
my $rex = Dog.new(name => 'Rex', age => 3);
my $fido = Dog.new(name => 'Fido', age => 5);
say $rex.name; # Rex
say $fido.name; # FidoСледующие темы показывают, как сделать атрибуты изменяемыми и как задать им значения по умолчанию. (Есть также способ объявить приватные атрибуты, скрытые снаружи; мы вернёмся к нему, когда будут введены методы.)
Темы этого раздела
Практика
Пройдите 1 тест по содержанию этого раздела.
Упражнения
В этом разделе 4 упражнения. Прежде чем приступать к практике, изучите все темы раздела.