Corso di Raku / Oggetti, input/output ed eccezioni / Classi e oggetti
Metodi di classe
La maggior parte dei metodi viene chiamata su un oggetto — un’istanza di una classe. Ma un metodo può essere chiamato anche sulla classe stessa, cioè sull’oggetto di tipo. Un metodo così si chiama spesso metodo di classe. È utile per valori e operazioni che appartengono alla classe nel suo insieme, invece che a un oggetto particolare.
Un metodo di classe si definisce esattamente come qualunque altro metodo:
class Road {
method speed-limit { 120 }
}e si chiama sul nome della classe invece che su un’istanza:
say Road.speed-limit; # 120Un metodo di classe lo hai già usato senza chiamarlo per nome:
new è un metodo chiamato sulla classe per creare un nuovo
oggetto.
Un metodo di classe non ha accesso agli attributi di istanza — dietro di esso non c’è alcun oggetto particolare — quindi lavora solo con informazioni uguali per ogni oggetto della classe. Quando il lavoro dipende dai dati di un oggetto preciso, usa un metodo ordinario chiamato su un’istanza; quando non dipende, un metodo di classe calza a pennello.
Nota che, pur non avendo bisogno di un’istanza, i metodi di classe possono comunque usare i dati dell’oggetto quando un oggetto ce l’hai:
class Road {
has $.name;
method speed-limit { 120 }
method info {
"The maximum speed on $.name is " ~ self.speed-limit
}
}
my $R404 = Road.new(name => 'Road 404');
say $R404.info;Questo programma stampa il risultato atteso:
The maximum speed on Road 404 is 120Senza l’oggetto istanziato della classe, una chiamata come
say Road.info darebbe un errore.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Esercizi
Questa sezione contiene 2 esercizi. Guarda tutti gli argomenti di questa sezione prima di iniziare gli esercizi.
Navigazione del corso
← Soluzione: Conversione di temperatura | Una formula nella classe →