Курс по 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. Променлив надпис

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

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