How can I declare a class variable as floating point in Moose?
My (fictional) sample below produces errors for "Real", "Number" etc ... "Str" works but defeats the purpose .. searching/Google doesn't help, since I can't hit the correct search terms...
PROBLEM.pm
package PROBLEM;
use strict;
use warnings;
use Moose;
has 'PROBLEM'=> (isa=>'real',is =>'ro',required=>'0',default=>sub {0.1;});
main.pl
use strict;
use warnings;
use PROBLEM;
my $problem=PROBLEM->new();
Check out the Moose Types documentation. There is no built-in float type, just Num
and its subtype Int
. This makes sense, since Perl really doesn't differentiate (visibly) between floats and integers.
The best thing to do is probably to use Num
as the type constraint, or write your own type that coerces the value into some form that suits your needs.
You need Num type for a real number:
{
package Problem;
use Moose;
has 'number' => (
isa => 'Num',
is => 'ro',
default => sub { 0.1 },
);
}
my $problem = Problem->new;
say $problem->number; # => 0.1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With