File: README.md

package info (click to toggle)
libmoox-role-cloneset-perl 0.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 136 kB
  • ctags: 9
  • sloc: perl: 169; makefile: 2
file content (57 lines) | stat: -rw-r--r-- 1,497 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 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>