Timo, Oops. You're right. (I was unconditionally sending an argument in my test that zeroed it out the attribute that I was watching -- doh!) Now I can confirm that TWEAK is the logical place to further initialize attributes.
I now see the light! Thanks, Mark -----Original Message----- From: Timo Paulssen [mailto:[email protected]] Sent: Thursday, October 5, 2017 13:56 To: Mark Devine <[email protected]>; [email protected] Subject: Re: Perl 6 Object Construction - General Advice The main difference between BUILD and TWEAK is that BUILD will replace all default and requiredness handling, while TWEAK keeps it intact. TWEAK gets run after these aspects had their turn, so if you have an "is required" attribute that doesn't get a value passed, the BUILDALL process will throw the corresponding exception before TWEAK even gets invoked. Don't forget that with the assignment syntax for attribute defaults you're allowed to do calculations, too! You can even refer to other attributes in there, as long as you use the $!foo syntax. hope that helps - Timo
