Курс 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. Змінювана мітка

Навігація курсом

Розв’язання: Назвіть тип   |   Атрибути для читання та запису