I've recently discovered that rather against my own intuition Moose does not set constructor provided arguments first. I've always thought that Moose did the logical thing here.. If I was to read the code here:
Class->new({ foo => bar })->baz; I'd have assumed that the process went like this: * BUILDARGS if any * Moose provided-new which sets the attributes to the values in the hashref * The default/initializer stage (undefined for the class, defined for the attribute) * BUILD which gets the complete object However, I'm now seeing this. The non-lazy defaults fire before `foo` get's set even though foo is explicitly provided. This seems awkward and counter-intuitive. You can find a test case here http://gist.github.com/645659 . Could anyone provide commentary on this behavior? Is this a bug in Moose. I'm on latest stable: 1.17. -- Evan Carroll - m...@evancarroll.com System Lord of the Internets web: http://www.evancarroll.com ph: 281.901.0011