如何在Moose中将类变量声明为浮点?

时间:2009-09-17 08:02:49

标签: perl floating-point moose

如何在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();

2 个答案:

答案 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