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