Perl 为什么自定义类型约束错误消息的尝试失败?
以下构造创建了一个类型约束,当由于未传递约束而拒绝某个属性时,该约束按预期运行(设置属性时检查“Roles::Thing”角色),我希望出现自定义错误消息“nota Thing”;但是,仍会给出默认错误消息。我做错了什么Perl 为什么自定义类型约束错误消息的尝试失败?,perl,moose,Perl,Moose,以下构造创建了一个类型约束,当由于未传递约束而拒绝某个属性时,该约束按预期运行(设置属性时检查“Roles::Thing”角色),我希望出现自定义错误消息“nota Thing”;但是,仍会给出默认错误消息。我做错了什么 role_type 'DoesThing', { role => 'Roles::Thing', message => sub { "Not a thing." } }; 更新:我在最初的帖子中没有提供足够的上下文。我尝试使用新类型的方式是: has
role_type 'DoesThing', {
role => 'Roles::Thing',
message => sub { "Not a thing." }
};
更新:我在最初的帖子中没有提供足够的上下文。我尝试使用新类型的方式是:
has things => (
isa => 'ArrayRef[DoesThing]'
);
类型验证按预期工作;但是,我仍然会收到默认的错误消息。我的自定义“Not a thing”错误消息没有像我预期的那样传播。错误消息是您在
ArrayRef
类型中得到的,而不管您在其中期望什么
要获取自定义错误消息,您需要将ArrayRef
合并到类型声明中:
subtype 'ArrayOfThings',
as 'ArrayRef[Roles::Thing]',
message { 'Not an array of things' };