Курс языка программирования 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 упражнения. Прежде чем приступать к практике, изучите все темы раздела.

  1. Класс точки
  2. Счётчик
  3. Книга
  4. Изменяемая метка

Навигация по курсу

Решение: Назовите тип   |   Атрибуты для чтения и записи