我有一个属性,我想对每个输入值进行强制激发。在0.72之前,这是通过强制Str
从Str
完成的。当这个功能被删除时,我采取了硬编码的Meta::TypeConstraint
文件来保持生产代码的正常工作。由于Moose 2.0
驼鹿你怎么对每一个输入做出强制性的攻击?
释放我以前只是让这种变化注释掉return $_[0] if $self->check($_[0]);
sub coerce {
my $self = shift;
my $coercion = $self->coercion;
unless ($coercion) {
require Moose;
Moose->throw_error("Cannot coerce without a type coercion");
}
#return $_[0] if $self->check($_[0]);
return $coercion->coerce(@_);
}
然而,使得穆斯V2相同的变化不起作用。我正在使用此功能来处理我想用正则表达式清理的字段。然而,检查它们是否符合是没有意义的,因为(几乎)没有一个符合要求。我使用这种方法来处理简单的事情,比如在字符串上运行正则表达式,或者重新格式化字符串(它可以表示现实世界中的货币符号,以便db可以使用)。
难道你不能只做自己的存取? `foo =>(accessor =>'_foo',handles => {foo => sub {...},},);` – ikegami 2011-12-15 04:28:26