Your parameterized role consists of two new things: parameter declarations and a 'role' block.
Parameters are declared using the parameter keyword which very much resembles Moose/has. You can use any option that Moose/has accepts. The default value for the 'is' option is 'ro' as that's a very common case. Use 'is => 'bare'' if you want no accessor. These parameters will get their values when the consuming class (or role) uses Moose/with. A parameter object will be constructed with these values, and passed to the 'role' block.
The 'role' block then uses the usual Moose::Role keywords to build up a role. You can shift off the parameter object to inspect what the consuming class provided as parameters. You use the parameters to customize your role however you wish.
There are many possible implementations for parameterized roles (hopefully with a consistent enough API); I believe this to be the easiest and most flexible design. Coincidentally, Pugs originally had an eerily similar design.
See MooseX::Role::Parameterized::Extending for some tips on how to extend this module.
Package Version | Update ID | Released | Package Hub Version | Platforms | Subpackages |
---|---|---|---|---|---|
1.11-bp156.3.1 info | GA Release | 2023-07-22 | 15 SP6 |
|
|
1.11-bp155.2.9 info | GA Release | 2023-05-17 | 15 SP5 |
|
|
1.11-bp154.1.14 info | GA Release | 2022-05-09 | 15 SP4 |
|
|
1.10-bp153.1.13 info | GA Release | 2021-03-06 | 15 SP3 |
|
|
1.10-bp152.3.13 info | GA Release | 2020-04-17 | 15 SP2 |
|
|
1.10-bp151.3.1 info | GA Release | 2019-07-16 | 15 SP1 |
|
|
1.10-bp151.2.11 info | GA Release | 2019-05-18 | 15 SP1 |
|
|
1.10-bp150.2.4 info | GA Release | 2018-07-30 | 15 |
|
|