作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据 Moose 最佳实践文档,我的 Moose 类应该如下所示:
package Person;
use Moose;
use namespace::autoclean;
# extends, roles, attributes, etc.
# methods
__PACKAGE__->meta->make_immutable;
1;
最佳答案
我认为避免这种情况的唯一方法是使用 MooseX::Declare
.
MooseX::Declare
是 macro
下面变成你的例子:
use MooseX::Declare;
class Person {
# attributes
# methods
}
它会自动插入
namespace::autoclean
并使类不可变。
class Person extends Human { ... }
要添加角色,您可以:
class Person with BlueEyeRole { ... }
您可以轻松组合这些:
class Person extends Human with BlueEyeRole { ... }
您还可以获得一些其他定义的关键字,例如。
method
:
class Person {
has 'name' => (is => 'rw', isa => 'Str');
method hello { "Hello " . $self->name }
}
如果你确实想让你的类(class)可变,那么它:
class Person is mutable { ... }
Maybe there is a technical reason why it isn't possible or why it shouldn't be done?
MooseX::Declare
使用
Devel::Declare
为 Perl 构建必要的语法来解释。
MooseX::Declare
.我已经在很多项目中使用了它,没有任何问题,并且在快速绘制基于类的应用程序时发现它是理想的。然而,大多数时候我对样板很满意,所以坚持使用标准
Moose
.
关于perl - 我所有的 Moose 类都必须包含 'namespace::autoclean' 和 'make_immutable' 还是有某种方法可以默认获取这些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3997241/
根据 Moose 最佳实践文档,我的 Moose 类应该如下所示: package Person; use Moose; use namespace::autoclean; # extends, ro
我是一名优秀的程序员,十分优秀!