7

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();
4

2 に答える 2

8

MooseTypesのドキュメントを確認してください。組み込みのfloat型はなくNum、そのサブ型だけIntです。Perlは実際にはfloatと整数を(目に見えて)区別しないので、これは理にかなっています。

おそらく最善の方法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 に答える