MakeMe...lassVar(3pm)
π¦ Class::MakeMethods::Template::ClassVar π¦
okay so real talk: this is the Class::MakeMethods::Template::ClassVar page from the User Contributed Perl Documentation β the manual name is MakeMe...lassVar(3pm), bestie, and it's all about static methods with subclass variation. iykyk π
πΈ NAME πΈ
Class::MakeMethods::Template::ClassVar β static methods with subclass variation
β¨ SYNOPSIS β¨
package MyObject;
use Class::MakeMethods::Template::ClassVar (
scalar => [ 'foo' ]
);
package main;
MyObject->foo('bar')
print MyObject->foo();
$MyObject::foo = 'bazillion';
print MyObject->foo();
π DESCRIPTION π
okay so these meta-methods give you access to package (class global) variables, and the package is determined at run-time. no cap. β¨
this is basically the same as the PackageVar meta-methods, except that PackageVar methods find the named variable in the package that defines the method, while ClassVar methods use the package the object is blessed into. so like: subclasses will each store a distinct value for a ClassVar method, but they'll share the same value for a PackageVar or Static method. periodt. π
π Common Parameters π
these params are defined for ClassVar meta-methods:
variableβ the name of the variable to store the value in. it defaults to the same name as the method. π
π Standard Methods π
the following methods from Generic should all be supported:
scalar
string
string_index (?)
number
boolean
bits (?)
array (*)
hash (*)
tiedhash (?)
hash_of_arrays (?)
object (?)
instance (?)
array_of_objects (?)
code (?)
code_or_scalar (?)
see Class::MakeMethods::Template::Generic for the interfaces and behaviors of these method types. π«Ά
the items marked with a * above are specifically defined in this package, whereas the others are formed automatically by the interaction of this package's generic settings with the code templates provided by the Generic superclass. π
the items marked with a ? above have not been tested sufficiently; please inform the author if they do not function as you would expect. no cap, that's literally what it says. π
π vars π
this rewrite rule converts package variable names into ClassVar methods of the equivalent data type. iconic. β¨
here's an example declaration:
package MyClass;
use Class::MakeMethods::Template::ClassVar (
vars => '$VERSION @ISA'
);
MyClass now has methods that get and set the contents of its $MyClass::VERSION and @MyClass::ISA package variables:
MyClass->VERSION( 2.4 );
MyClass->push_ISA( 'Exporter' );
subclasses can use these methods to adjust their own variables:
package MySubclass;
MySubclass->MyClass::push_ISA( 'MyClass' );
MySubclass->VERSION( 1.0 );
okay bye bestie π«Ά this whole vibe came from perl v5.36.0, dated 2022-10-13 β mwah π
π¦ where this page comes from
- ubuntu noble: libclass-makemethods-perl 1.01-7 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: libclass-makemethods-perl 1.01-7 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libclass-makemethods-perl 1.01-7 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms