sourCEntral - mobile manpages




MooX::Role::CloneSet − create updated copies of immutable objects


    package Someone;
    use Moo;
    with 'MooX::Role::CloneSet';
    has name => (
        is => 'ro',
    has race => (
        is => 'ro',
    package main;
    my $first = Someone−>new(name => 'Drizzt', race => 'drow');
    my $hybrid = $first−>cset(race => 'dwarf');
    my $final = $weird−>cset(name => 'Catti−brie', race => 'human');


"MooX::Role::CloneSet" is a role for immutable objects, providing an easy way to create a new object with some modified properties. It provides the "cset()" method that creates a new object with the specified changes, shallowly copying all the rest of the original object’s properties.


cset(field => value, ...)

Shallowly clone the object, making the specified changes to its attributes.

Note that this method obtains the names and values of the current attributes by dereferencing the object as a hash reference; since Moo does not provide metaclasses by default, it cannot really get to them in any other way. This will not work for parameters that declare an "init_arg"; see "MooX::Role::CloneSet::BuildArgs" for an alternative if using truly immutable objects.


Copyright (C) 2016 Peter Pentchev <roam AT ringlet DOT net>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


Peter Pentchev <roam AT ringlet DOT net>