This is probably explained somewhere, but I've been unable to piece it together in my own investigation. If I have a class:
class Foo { has Int $!value; } I get the impression that the default constructor would allow me to say my Foo $foo .= new(value => 2); Which seems to me to be a bit odd, since $!value is surely supposed to be private. In any case, how would I write a custom constructor which initialises $!value (and possibly many other fields which have to be initialised based on some constructor parameters)? So far I think it's something like this: method new($class: Int $v) { my $self = $class.bless(); $self!value = $v; return $self; } Or possibly method new($class: Int $v) { $class.bless(value => $v); } Maybe both are valid. Rakudo didn't seem to understand private attributes when I tried playing with this, so I have no real idea if I'm barking in the correct forest.