Skip to content

A Perl 5 Moo role for creating updated copies of immutable objects

License

Notifications You must be signed in to change notification settings

ppentchev/MooX-Role-CloneSet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

A Perl 5 Moo role for creating updated copies of immutable objects

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages