Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Klasoj kaj objektoj / Introspekti objektojn / Exercises / Priskribu klason

Solvo: Priskribu klason

Jen ebla solvo de la tasko.

Kodo

class Animal {
}

class Dog is Animal {
}

say Dog.^name;
say Dog.^mro.elems;
say 'Cat'Dog.^mro.map(*.^name);

🦋 Vi povas trovi la fontkodon en la dosiero describe-a-class.raku.

Eligo

Dog
4
False

Komentoj

  1. .^name redonas la propran nomon de la klaso, Dog.

  2. .^mro redonas la heredan ĉenon, kaj .elems kalkulas ĝin. Estas kvar tipoj en la ĉeno — Dog, ĝia patro Animal, kaj la universalaj Any kaj Mu — do la kalkulo estas 4.

  3. .^mro.map(*.^name) transformas tiun ĉenon en la liston de tipnomoj, (Dog Animal Any Mu). La ara membreca operatoro poste kontrolas, ĉu Cat estas unu el ili. Dog ne devenas de iu Cat, do la respondo estas False.

Kursa navigado

Priskribu klason   |   Nombru la atributojn