首页 > 解决方案 > 为混合角色的属性赋值

问题描述

我正在尝试使用EnumerationPerl 6 中的角色的示例(作为修复文档问题的一部分,未记录枚举角色)。我想出了这个简单的例子:

class DNA does Enumeration {
    my $DNAindex = 0;
    my %pairings = %( A => "T",
                      T => "A",
                      C => "G",
                      G => "T" );

    method new( $base-pair where "A" | "C" | "G" | "T" )  {
        self.bless( key => $base-pair,
                    value => %pairings{$base-pair},
                    index => 33);
    }

    multi method gist(::?CLASS:D:) {
        return "$!key -> $!value with $!index";
    }

}

for <A C G T>.roll( 16 ) -> $letter {
    my DNA $base = DNA.new( $letter );
    say "Pairs ", $base.pair,  " with ", $base.gist;
}

从理论上讲,Enumeration has $!indexindex => 33尝试为它分配一个值;但是,它返回的只是

 Pairs T => A with T -> A with 0

直接为 $!index 分配值的任何其他方式,我得到“无法分配给我在另一个问题中得到的不可变值。根据其中一个答案,这可能是一个错误;在这种情况下,我会想知道是否有一些解决方法。

标签: mixinsraku

解决方案


这是一个错误无法从消费类更改本机角色属性(与您链接的答案中提到的无关)。

我不知道解决方法。


推荐阅读