69、编写一个角色来填充蝴蝶的分类信息,固定一些分类级别,同时使一些级别可更改,创建Butterfly类的对象并输出对象信息,然后添加CommonName并再次输出对象信息
role Lepidoptera {
# 固定分类级别
has $.kingdom = 'Animalia';
has $.phylum = 'Arthropoda';
has $.class = 'Insecta';
has $.order = 'Lepidoptera';
# 可更改分类级别
has $.family is rw;
has $.genus is rw;
has $.species is rw;
}
role CommonName {
has $.common-name is rw;
}
class Butterfly does Lepidoptera does CommonName {}
# 创建Butterfly类的对象并输出对象信息
my $butterfly = Butterfly.new: :family( 'Nymphalidae' ), :genus( 'Hamadryas' ), :species( 'perlicus' );
say $butterfly;
# 添加CommonName并再次输出对象信息
$butterfly.common-name('Perly Cracker');
say $butterfly;
70、修改Lepidoptera角色,添加一个基于属和种构建字符串的方法,创建Butterfly类的对象并调用该方法输出结果
已在`Lepidoptera`角色中添加了`binomial_name`方法,用于基于属和种构建字符串。创建`Butterfly`类对象并调用该方法的示例代码如下:
```raku
role Lepidoptera {
has $.kingdom = 'Animalia';
has $.phylum = 'Arthropoda';
has $.class = 'Insecta';
has $.order = 'Lepidoptera';
has $.family is rw;
has $.genus is rw;
has $.species is rw;
method binomial_name() {
return $!genus ~ ' ' ~ $!species;
}
}
role CommonName {
has $.common_name is rw;
}
class Butterfly does Lepidoptera does CommonName {}
my $butterfly = Butterfly.new(
family => 'Nymphalidae',
genus => 'Hamadryas',
species => 'perlicus'
);
put $butterfly.binomial_name;
输出结果为:
Hamadryas perlicus
##71、创建支持以下程序的基础设施:use lib <.>; use Hamadryas; my $cracker = Hamadryas.new: :species( 'perlicus' ), :common-name( 'Perly Cracker' ); put $cracker.binomial-name; put $cracker.common-name; 要求创建Hamadryas类,它是更具体的Butterfly类,使用CommonName和BinomialName角色,创建Nymphalidae角色等
以下是创建所需基础设施的步骤和代码示例:
1. 创建 `BinomialName` 角色(`BinomialName.pm6`):
```perl6
role BinomialName {
has $.genus is rw;
has $.species is rw;
method binomial-name () {
"$.genus $.species"
}
}
- 创建
CommonName角色(CommonName.pm6):
role CommonName {
has $.common-name is rw;
}
- 创建
Nymphalidae角色(Nymphalidae.pm6):
role Nymphalidae {
has $.family = 'Nymphalidae';
}
- 创建
Butterfly类(Butterfly.pm6):

最低0.47元/天 解锁文章
438

被折叠的 条评论
为什么被折叠?



