【发布时间】:2018-06-15 23:28:24
【问题描述】:
我想知道如何在运行时将抽象角色混合到变量中。这是我想出的
role jsonable {
method to-json( ) { ... }
}
class Bare-Word {
has $.word;
method new ( Str $word ) {
return self.bless( $word );
}
}
my $that-word = Bare-Word.new( "Hola" ) but role jsonable { method to-json() { return "['$!word']"; } };
但是,这会引发(完全合理的)错误:
$ perl6 role-fails.p6
===SORRY!=== Error while compiling /home/jmerelo/Code/perl6/dev.to-code/perl6/role-fails.p6
Attribute $!word not declared in role jsonable
at /home/jmerelo/Code/perl6/dev.to-code/perl6/role-fails.p6:14
------> hod to-json() { return "['$!word']"; } }⏏;
expecting any of:
horizontal whitespace
postfix
statement end
statement modifier
statement modifier loop
$!word 属于该类,因此在 mixin 声明中因此不可用。但是,but is simply a function call 所以声明的变量应该在内部可用,对吧?访问它的正确语法是什么?
【问题讨论】: