Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Klasoj kaj objektoj / Klasoj

Tipobjektoj kaj ekzempleroj

Kiam vi skribas klasan nomon kiel Dog, vi referencas la tipobjekton de la klaso. La tipobjekto reprezentas la tipon mem, ne iun apartan objekton de tiu tipo. Ekzemplero, kreita per new, estas efektiva objekto.

Raku povas distingi ilin. La metodo defined redonas False por tipobjekto kaj True por ekzemplero:

class Dog {
}

say Dog.defined;     # False
say Dog.new.defined; # True

Tipobjekto estas konsiderata nedifinita, ĉar ĝi tenas neniujn konkretajn datumojn — ĝi estas nur la priskribo de tipo. Ekzemplero estas difinita: ĝi estas vera objekto.

Ambaŭ raportas la saman tipon per WHAT, kiun vi renkontis en la sekcio pri ujoj:

class Dog {
}

say Dog.WHAT;     # (Dog)
say Dog.new.WHAT; # (Dog)

La krampoj ĉirkaŭ (Dog) estas la maniero de Raku montri tipon. Do Dog kaj Dog.new kunhavas la tipon Dog; la diferenco estas, ke unu estas la tipo mem, kaj la alia estas objekto de tiu tipo.

Praktiko

Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.

Kursa navigado

Klasoj   |   Kvizo — Klasoj


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.