大佬教程收集整理的这篇文章主要介绍了perl – 我的所有Moose类都必须包含’namespace :: autoclean’和’make_immutable’,或者是否有某种方法可以默认获取这些?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
package Person; use Moose; use namespace::autoclean; # extends,roles,attributes,etc. # methods __PACKAGE__->meta->make_immutable; 1;
见Moose::Manual::BestPractices.
99%的时间这是我想要的,所以有没有办法让我的命名空间自动清理,我的类默认是不可变的,所以我不必让这个代码混乱?
也许有一个技术原因导致它不可能或为什么不应该这样做?
谢谢
MooseX::Declare
.
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 { ... }
从技术上讲,将这一切都拉到一起很难. MooseX::Declare
利用Devel::Declare
为Perl构建必要的语法来解释.
因此,如果锅炉板是您的问题,那么考虑使用MooseX::Declare
.我已经在很多项目上使用它而没有任何问题,并且在快速草绘基于类的应用程序时发现它是理想的.但是大多数时候我对样板很满意,所以坚持使用标准的驼鹿.
以上是大佬教程为你收集整理的perl – 我的所有Moose类都必须包含’namespace :: autoclean’和’make_immutable’,或者是否有某种方法可以默认获取这些?全部内容,希望文章能够帮你解决perl – 我的所有Moose类都必须包含’namespace :: autoclean’和’make_immutable’,或者是否有某种方法可以默认获取这些?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。