in reply to Re: Moose 'clone' Constructor
in thread Moose 'clone' Constructor

G'day Arunbear,

++ What can I say: great minds link alike. :-)

When I got home from work, Corion's reply was the only response at that time. I followed the link he'd provided, followed some more links from that, then hit "reply". As I was composing, I noticed I now had a reply from you and thought: "Oh good, more information, I'll look at that in a minute." — and when I did, I then thought: "Hmmm, that looks familiar."

Anyway, I've only just found it, perhaps you've used it. I noticed there's an additional argument:

$metaclass->clone_object($instance, %params)

Is %params as straightforward as it seems? I'm thinking maybe issues with values that are references to data structures, as opposed to simpler (Str, Int, etc.) values.

— Ken

Replies are listed 'Best First'.
Re^3: Moose 'clone' Constructor
by Arunbear (Prior) on Jul 04, 2018 at 11:52 UTC
    %params are the same kind of data as were passed to the constructor when $existing_object was created (but now you have a chance to override those if needed).

      OK, thanks. I may have been thinking along the lines of:

      has x => (..., default => 'abc'); has y => (..., default => sub { [qw{a b c}] });

      where that second line can't be written as:

      has y => (..., default => [qw{a b c}]);

      But, of course, in the constructor you use the values as is (without needing a coderef):

      ...->new(x => 'def', y => [qw{d e f}]);

      — Ken