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 →