Provided by: libmoox-role-cloneset-perl_0.1.0-5_all bug

NAME

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

SYNOPSIS

           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');

DESCRIPTION

       "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.

METHODS

       •   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.

LICENSE

       Copyright (C) 2016  Peter Pentchev <roam@ringlet.net>

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

AUTHOR

       Peter Pentchev <roam@ringlet.net>