首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >穆斯,你如何对每一个输入进行强制触发呢?

穆斯,你如何对每一个输入进行强制触发呢?
EN

Stack Overflow用户
提问于 2011-12-15 00:23:17
回答 1查看 221关注 0票数 2

我有一个属性,我想在每个输入值上强制触发。在0.72之前,这是通过从Str强制Str来完成的。当这个特性被移除时,我采取了硬破解Meta::TypeConstraint文件的方法来保持生产代码正常工作。自Moose 2.0发布以来

我过去只需要注释掉return $_[0] if $self->check($_[0]);就可以做这样的更改

代码语言:javascript
复制
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可以使用的值)。

EN

回答 1

Stack Overflow用户

发布于 2011-12-19 17:21:12

我能想到的让强制在每个输入上触发的唯一原因是,如果你使用强制来产生副作用,在这种情况下,我建议你参考历史悠久的医生笑话:

患者:医生,我这样做的时候很痛。

医生:那就别那么做了。

我意识到你可能有很多代码要修复,但我不怀疑你最终会得到更干净的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8507927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档