perl – 我的所有Moose类都必须包含’namespace :: autoclean’
根据Moose最佳实践文档,我的Moose类应该如下所示:
package Person; use Moose; use namespace::autoclean; # extends,roles,attributes,etc. # methods __PACKAGE__->meta->make_immutable; 1; 见Moose::Manual::BestPractices. 99%的时间这是我想要的,所以有没有办法让我的命名空间自动清理,我的类默认是不可变的,所以我不必让这个代码混乱? 也许有一个技术原因导致它不可能或为什么不应该这样做? 谢谢 解决方法
我认为避免这种情况的唯一方法是使用
MooseX::Declare .
use MooseX::Declare; class Person { # attributes # methods } 它会自动插入namespace :: autoclean并使该类不可变. 对于扩展课程,您可以: class Person extends Human { ... } 要添加角色,您需要: class Person with BlueEyeRole { ... } 你可以轻松地结合这些: class Person extends Human with BlueEyeRole { ... } 您还可以获得一些其他定义的关键字,例如.方法: class Person { has 'name' => (is => 'rw',isa => 'Str'); method hello { "Hello " . $self->name } } 如果你确实希望让你的类可变,那么: class Person is mutable { ... }
从技术上讲,将这一切都拉到一起很难. 因此,如果锅炉板是您的问题,那么考虑使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |