MakeMe...ribute(3pm)

πŸ“¦
version 1.01 Β· 5 versions
, in ubuntu noble, ubuntu resolute, ubuntu stonking

πŸ¦‹ NAME πŸ¦‹

Class::MakeMethods::Attribute β€” declare generated subs with attribute syntax. periodt. πŸ’…

✨ SYNOPSIS ✨

okay bestie, quick vibe check β€” this is literally MakeMe...ribute(3pm) from the User Contributed Perl Documentation, and here's the setup:

  package MyObject;
  use Class::MakeMethods::Attribute 'Standard::Hash';

  sub new    :MakeMethod('new');
  sub foo    :MakeMethod('scalar');
  sub bar    :MakeMethod('scalar', { hashkey => 'bar_data' });
  sub debug  :MakeMethod('Standard::Global:scalar');

🌸 DESCRIPTION 🌸

So Class::MakeMethods::Attribute is the package that lets common types of methods be generated via a subroutine attribute declaration. (Available in Perl 5.6 and later.) πŸ’–

Adding the :MakeMethod() attribute to a subroutine declaration causes Class::MakeMethods to create and install a subroutine based on the parameters given to the :MakeMethod attribute. literally generated subs, no cap. ✨

You can declare a default method-generation class by passing the name of a MakeMethods subclass in the use Class::MakeMethods::Attribute statement. This default method-generation class will also apply as the default to any subclasses declared at compile time. If no default method-generation class is selected, you will need to fully-qualify all method type declarations. πŸ‘‘

πŸŽ€ EXAMPLE πŸŽ€

Here's a typical use of Class::MakeMethods::Attribute, bestie:

  package MyObject;
  use Class::MakeMethods::Attribute 'Standard::Hash';

  sub new    :MakeMethod('new');
  sub foo    :MakeMethod('scalar');
  sub bar    :MakeMethod('scalar', { hashkey => 'bar_data' });
  sub debug  :MakeMethod('Standard::Global:scalar');

  package MySubclass;
  use base 'MyObject';

  sub bazzle :MakeMethod('scalar');

This is equivalent to the following explicit Class::MakeMethods invocations:

  package MyObject;

  use Class::MakeMethods (
    -MakerClass => 'Standard::Hash',
    new => 'new',
    scalar => 'foo',
    scalar => [ 'ba', { hashkey => 'bar_data' } ],
    'Standard::Global:scalar' => 'debug',
  );

  package MySubclass;
  use base 'MyObject';

  use Class::MakeMethods (
    -MakerClass => 'Standard::Hash',
    scalar => 'bazzle',
  );

πŸ’… DIAGNOSTICS πŸ’…

The following warnings and errors may be produced when using Class::MakeMethods::Attribute to generate methods. (Note that this list does not include run-time messages produced by calling the generated methods, or the standard messages produced by Class::MakeMethods.) 🫢

  • Can't apply MakeMethod attribute to %s declaration. β€” You can not use the ":MakeMethod" attribute with lexical or anonymous subroutine declarations.
  • No method type provided for MakeMethod attribute. β€” You called ":MakeMethod()" without the required method-type argument.

🌈 SEE ALSO 🌈

  • See Attribute::Handlers by Damian Conway.
  • See Class::MakeMethods for general information about this distribution.

πŸ’œ and that's the whole vibe! this page came from perl v5.36.0, dated 2022-10-13 β€” MakeMe...ribute(3pm) out! 🫢✨

πŸ“¦ where this page comes from