Corso di Raku / Oggetti, input/output ed eccezioni / Classi e oggetti / Il protocollo dei metaoggetti 🆕 / Metametodi

Quiz — Il MOP

Cosa stampa il programma seguente?

class Point {
    has $.x;
    has $.y;
}

say Point.^attributes.elems;
01
12
0(Point)
0un errore

.^attributes è un metametodo — chiamato con .^ sul metaoggetto del tipo — che elenca gli attributi dichiarati da un tipo, e .elems li conta. Point dichiara due attributi, $.x e $.y, quindi stampa 2.

Metametodi   |   Aggiungere metodi a runtime