代码之家  ›  专栏  ›  技术社区  ›  lexu

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

  •  7
  • lexu  · 技术社区  · 17 年前

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

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


    下午4点

    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 回复  |  直到 17 年前
        1
  •  8
  •   friedo    17 年前

    查看 Moose Types 文档没有内置的浮动类型,只是 Num 及其亚型 Int . 这是有意义的,因为Perl实际上(明显地)不区分浮点和整数。

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

        2
  •  6
  •   AndyG    9 年前

    号码

    {
        package Problem;
        use Moose;
    
        has 'number' => ( 
            isa      => 'Num', 
            is       => 'ro', 
            default  => sub { 0.1 },
        );
    }
    
    
    my $problem = Problem->new;
    say $problem->number;  # => 0.1