7

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

下面我的(虚构)示例为“Real”、“Number”等产生错误……“Str”有效,但没有达到目的……搜索/谷歌没有帮助,因为我无法找到正确的搜索词…… .


问题.pm

package PROBLEM;
use strict;
use warnings;
use Moose;

has 'PROBLEM'=> (isa=>'real',is =>'ro',required=>'0',default=>sub {0.1;});

主文件

use strict;
use warnings;

use PROBLEM;

my $problem=PROBLEM->new();
4

2 回答 2

8

查看Moose 类型文档。没有内置的 float 类型,只有Num它的 subtype Int。这是有道理的,因为 Perl 并没有(明显地)区分浮点数和整数。

最好的做法可能是Num用作类型约束,或者编写您自己的类型,将值强制转换为适合您需要的某种形式。

于 2009-09-17T08:41:00.810 回答
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
于 2009-09-17T08:38:15.433 回答