List::Objects::Types-基于Type::Tiny的类型

package Foo;
use List::Objects::Types -all;
use List::Objects::WithUtils;
use Moo;
use MooX::late;
has my_array => (
is      => 'ro',
isa     => ArrayObj,
default => sub { array },
);
has static_array => (
is      => 'ro',
isa     => ImmutableArray,
coerce  => 1,
default => sub { [qw/ foo bar /] },
);
has my_hash => ( is => 'ro', isa => HashObj );

List::Objects::Types是基于Type::Tiny的类型模块,常与List::Objects::WithUtils配合使用。该模块提供了对常见数据结构类型(如数组和哈希)的支持,并允许为其添加额外的功能。

通过has声明属性时,可以指定这些类型的约束,比如ArrayObjImmutableArrayHashObjArrayObjImmutableArray提供了数组的基本功能和不可变数组的支持,而HashObj支持哈希类型。