The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Evo::Class::Role

VERSION

version 0.0213

DESCRIPTION

Role is just like classes except you can only reuse it. You can't create an instance of the role. If you need to reuse a code without "should be overriden by subclass" hacks - role is just what you expecting

Also can be used as "interaces"

SYNOPSYS

  package main;
  use Evo;

  {

    # role
    package My::Role;
    use Evo '-Class::Role *; -Loaded';

    has myattr => 'VAL';
    sub to_lc($self) : Public { lc $self->myattr }


    # class
    package My::Class;
    use Evo '-Class *';

    with 'My::Role';

  }


  my $obj = My::Class->new();
  say $obj->to_lc;    # value

  {
    # just check implementation
    package My::BadClass;
    use Evo '-Class *';

    # will die
    implements 'My::Role';
  }

AUTHOR

alexbyk.com

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by alexbyk.

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