Raku kurss / Objekti, ievade/izvade un izņēmumi / Klases un objekti
Lomas
Loma ir uzvedības (un dažkārt datu) kūlītis, ko var koplietot vairākas klases. Ja mantošana saka, ka klase ir kāda cita paveids, tad loma apraksta to, ko klase prot darīt.
Lomu definējat ar atslēgvārdu role, gluži kā klasi, un
klasei to dodat ar iezīmi does:
role Greet {
method hello {
'Hello from ' ~ self.name;
}
}
class Person does Greet {
has $.name;
}Klasei Person tagad ir metode hello no
lomas, it kā tā būtu uzrakstīta pašā klasē:
say Person.new(name => 'Anna').hello; # Hello from AnnaKlase, kas dara lomu, tiek atpazīta kā tāda, kam šī loma ir:
say Person.new(name => 'Anna') ~~ Greet; # TrueIevērojiet, ka lomas metode hello izmanto
self.name, lai gan pašai lomai atribūta name
nav. Tas ir labi: metode izpildās kā daļa no tās klases, kas lomu
komponē, un šī klase nodrošina name. Nākamais temats
parāda, ka klase var uzņemties vairāk nekā vienu lomu vienlaikus.
Šīs sadaļas temati
Prakse
Jūs gaida 1 viktorīna par šīs sadaļas saturu.
Vingrinājumi
Šajā sadaļā ir 3 vingrinājumi. Pirms ķerieties pie vingrinājumiem, izlasiet visus šīs sadaļas tematus.