Package Info

perl-PerlX-Maybe


Return a pair only if they are both defined


Unspecified

Moose classes (and some other classes) distinguish between an attribute being unset and the attribute being set to undef. Supplying a constructor arguments like this:

my $bob = Person->new( name => $name, age => $age, );

Will result in the 'name' and 'age' attributes possibly being set to undef (if the corresponding '$name' and '$age' variables are not defined), which may violate the Person class' type constraints.

(Note: if you are the author of the class in question, you can solve this using MooseX::UndefTolerant. However, some of us are stuck using non-UndefTolerant classes written by third parties.)

To ensure that the Person constructor does not try to set a name or age at all when they are undefined, ugly looking code like this is often used:

my $bob = Person->new( defined $name ? (name => $name) : (), defined $age ? (age => $age) : (), );

or:

my $bob = Person->new( (name => $name) x!!(defined $name), (age => $age) x!!(defined $age), );

A slightly more elegant solution is the 'maybe' function.


License: Artistic-1.0 OR GPL-1.0-or-later
URL: https://metacpan.org/release/PerlX-Maybe

Categories

Releases

Package Version Update ID Released Package Hub Version Platforms Subpackages
1.202-bp156.2.1 info GA Release 2023-07-22 15 SP6
  • AArch64
  • ppc64le
  • s390x
  • x86-64
  • perl-PerlX-Maybe
1.202-bp155.1.5 info GA Release 2023-05-17 15 SP5
  • AArch64
  • ppc64le
  • s390x
  • x86-64
  • perl-PerlX-Maybe