Corso di Raku / Oggetti, input/output ed eccezioni / Classi e oggetti / Ruoli / Exercises / Una scatola con una misura
Soluzione: Una scatola con una misura
Ecco una possibile soluzione del compito.
Codice
role Sized {
method describe {
'size is ' ~ self.size;
}
}
class Box does Sized {
has $.size;
}
my $b = Box.new(size => 10);
say $b.describe;
say $b ~~ Sized;🦋 Trova il programma nel file greetable.raku.
Output
size is 10
TrueCommenti
Il ruolo fornisce il metodo
describe, e la classe lo compone condoes Sized. Il metodo si appoggia aself.size, che è fornito dalla classeBox: il ruolo e la classe si incastrano per formare l’oggetto completo.Poiché
Boxassume il ruolo, lo smartmatch$b ~~ SizedèTrue: un oggetto viene riconosciuto come portatore di ogni ruolo che la sua classe compone, il che è utile per controllare che cosa sa fare un oggetto prima di chiamare un metodo del ruolo.