Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^8: a State machine with Roles - possible? (class or instance)

by mascip (Pilgrim)
on May 31, 2013 at 16:41 UTC ( [id://1036267]=note: print w/replies, xml ) Need Help??


in reply to Re^7: a State machine with Roles - possible? (class or instance)
in thread a State machine with Roles - possible?

I don't know how Ruby mixins works, and i'm not sure how Moose/Moo implement it exactly, but i know that it's possible to have each Door be in a different state. Because that is what apply_all_roles_to($object, @roles) is for: it does not apply to the whole class, but only to one object.

I have no idea about the scalability. I think that Salva made a good point: if it gets that complicated, i'll probably want to re-think my design.

  • Comment on Re^8: a State machine with Roles - possible? (class or instance)

Replies are listed 'Best First'.
Re^9: a State machine with Roles - possible? (class or instance)
by LanX (Saint) on May 31, 2013 at 19:40 UTC
    Ahh OK I didn't check the documentation in Moose::Util ... =)

    apply_all_roles($applicant, @roles)

    This function applies one or more roles to the given $applicant The applicant can be a role name, class name, or object.

    The $applicant must already have a metaclass object.

    The list of @roles should a list of names or Moose::Meta::Role objects, each of which can be followed by an optional hash reference of options (-excludes and -alias).

    but couldn't find a description for metaclass either, I suppose a package container for roles.

    Just for a better understanding, where in your code did you assure that the $applicant already has a metaclass object?

    Cheers Rolf

    ( addicted to the Perl Programming Language)

      Sorry, i didn't realize that the documentation was not clear enough (indeed). apply_all_roles() gives a meta to the instance. For example the class of my $door instance is an anonymous class called 'Moose::Meta::Class::__ANON__::SERIAL::16=HASH(0x9ac4b8)'. I have made tests: each door can be in a different state (i'm lazy to share these: while trying to unapply Roles on more complex examples, i have lost these tests)

      But i don't manage to unapply a Role, and i think there's a better way anyway (see message below)

        > Sorry, i didn't realize that the documentation was not clear enough (indeed).

        I'd rather say it's wrong. =)

        > apply_all_roles() gives a meta to the instance.

        I checked the code it indeed does, so the POD should better reflect this.

        But thanks it's much clearer now. =)

        Cheers Rolf

        ( addicted to the Perl Programming Language)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1036267]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (4)
As of 2024-04-16 06:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found