Können native Attribute als Bindungsziel in Parametern verwendet werden?

8

Laut der Checkliste 6.d (aktuelle Version) können sie.

Jedoch,

class Foo { 
    has num $.numillo;
    submethod BUILD( :$numillo = 3.5 ) {}
};
my $foo = Foo.new;
say $foo.raku; # OUTPUT:  «Foo.new(numillo => 0e0)␤»  

Das Attribut scheint nicht bindbar zu sein oder erhält zumindest keinen zugewiesenen Wert. Vermisse ich hier etwas?

jjmerelo
quelle

Antworten:

11

Sie weisen nur einem benannten Parameter in einen Wert zu BUILD, nicht dem Attribut!

submethod BUILD( :$!numillo = 3.5e0 ) {}

sollte das beheben (beachten Sie das ! in der Unterschrift). Bitte beachten Sie auch , dass 3.5sich nicht ein num, würden Sie es eine machen müssen durch Zugabe e0.

Elizabeth Mattijsen
quelle