
250
|
第
12
章
练习
12.4
为
Hamadryas
蝴蝶的界(
kingdom
)、门(
phylum
)、纲(
class
)、目(
order
)、
科(
family
)和属(
genus
)创建类。门继承界,纲继承门,依此类推。每个类
要明确它在这个继承体系中的位置:
class Nymphalidae is Lepidoptera { }
在
Hamadryas
中定义一个
.full-name
方法,把所有级别连想来。
属
Hamadryas
属于
Animalia
界,
Arthropodia
门,
Insecta
纲,
Lepidoptera
目,
Nymphalidae
科。
12.5.1
检查继承
你已经看到
.^mro
可以得到类的一个
List
。
.isa
方法返回
True
或
False
来指示你
指定的类型是否在这个
List
中。可以用一个类型对象作为参数(
Str
)测试它是一
个类型还是一个对象:
put Int.isa: 'Cool'; # True
put Int.isa: Cool; # True
put Butterfly.isa: Insect; # True;
put Butterfly.isa: Int # False;
my $butterfly-object = Butterfly.new;
put $butterfly.isa: Insect; # True
智能匹配可以做同样的工作,这也是只提供一个类型时
when
检查的内容:
if Butterfly ~~ Insect {
put "Butterfly is an Insect"; ...