Perl Moose属性具有最小值,最大值和默认值

cap*_*fan 7 perl attributes moose

使用Moose,可以创建具有默认值的属性.我有一组属性都具有最小值,最大值和默认值.它们是表示比例的属性(例如Tk :: Scale).

目前,我至少有3个属性:current和default:

has 'attr' => (is => 'rw', isa => 'Int', default => 300, lazy => 1, clearer => '_clear_attr');
Run Code Online (Sandbox Code Playgroud)

分钟:

has 'attr_min' => (is => 'rw', isa => Int', default => 100);
Run Code Online (Sandbox Code Playgroud)

最大:

has 'attr_max' => (is => 'rw', isa => Int', default => 1000);
Run Code Online (Sandbox Code Playgroud)

是否可以在一个属性中包含所有四个(当前,默认,最小,最大)?

ike*_*ami 7

我想你想创建一个验证规则.

use Moose::Util::TypeConstraints;

subtype 'ScaleVal',
   as 'Int',
   where { 100 <= $_ && $_ <= 1000 };

has attr => (
   is      => 'rw',
   isa     => 'ScaleVal',
   default => 300,
);
Run Code Online (Sandbox Code Playgroud)