Corso di Raku / Oggetti, input/output ed eccezioni / Classi e oggetti
Introspezione degli oggetti
Nella sezione sui contenitori
hai usato .^name per chiedere a un valore il suo tipo. Le
stesse metachiamate .^ ti permettono di ispezionare una
classe e i suoi oggetti: i loro nomi, i loro attributi e la loro
posizione in una gerarchia.
Il metametodo .^name restituisce il nome della
classe:
class Dog {
has Str $.name;
method bark { 'Woof' }
}
say Dog.^name; # DogIl metametodo .^attributes elenca gli attributi della
classe. Ciascuno è mostrato con il suo tipo e il suo nome privato
interno (la forma $! che hai incontrato con gli attributi privati):
say Dog.^attributes; # (Str $!name)L’introspezione è utile per gli strumenti che lavorano con gli oggetti in modo generico — per esempio per stampare ogni attributo di un oggetto senza conoscerne in anticipo la classe. L’argomento successivo esamina come vedere la catena di ereditarietà di una classe.
Anche in questa sezione
Pratica
Risolvi 1 quiz sul contenuto di questa sezione.
Esercizi
Questa sezione contiene 2 esercizi. Guarda tutti gli argomenti di questa sezione prima di iniziare gli esercizi.
Navigazione del corso
← Soluzione: Un robot che balla | La catena di ereditarietà →