如何在Moose中将类变量声明为浮点?
下面我的(虚构)示例为“Real”,“Number”等产生错误......“Str”有效但无法实现目的..搜索/ Google没有帮助,因为我无法找到正确的搜索术语...
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();
答案 0 :(得分:8)
查看Moose Types文档。没有内置浮点类型,只有Num
及其子类型Int
。这是有道理的,因为Perl实际上并没有区分(可见)浮点数和整数。
最好的办法可能是使用Num
作为类型约束,或编写自己的类型,将值强制转换为适合您需要的形式。
答案 1 :(得分:6)
您需要 Num 类型作为实数:
{
package Problem;
use Moose;
has 'number' => (
isa => 'Num',
is => 'ro',
default => sub { 0.1 },
);
}
my $problem = Problem->new;
say $problem->number; # => 0.1