> On 14 Nov 2017, at 18:06, Fernando Santagata <nando.santag...@gmail.com> > wrote: > I'm converting a program from Perl5/Moose. > I have several classes, each has some attributes that need to be processed in > the same way before being passed to other objects. > > When I was using Moose, I had some "around" methods that would automatically > modify the value before delivering it to those attributes, so delegating the > object to do the needed adjustments. > > Stripped to the bare bones, the thing that in Perl6 looks like this: > > class A { > has $!a; > > method a($val?) > { > if $val.defined { > # Modify $val in some way > $!a = $val; > } else { > $!a; > } > } > } > > my A $a .= new; > # $a.a = 42; # This outputs an error > $a.a(42); > say $a.a; > > Any hint how to make it work as an assignment, instead of a method call? > Better yet, is there a way to abstract that behavior in a role?
I think you want “is rw” on a public attribute? class A { has $.a is rw; } my $obj = A.new; $obj.a = 42; dd $obj; =========== A $obj = A.new(a => 42) Liz