perl – 如何覆盖Moose :: Role中的sub?
发布时间:2020-12-15 22:06:52 所属栏目:大数据 来源:网络整理
导读:我正在尝试实现一个Moose :: Role类,其行为类似于 Java中的抽象类.我想在Role中实现一些方法,但是能够在具体类中覆盖这些方法.如果我尝试使用与扩展类时相同的样式,我会得到错误如果本地方法已经存在,则无法添加覆盖方法.这是一个例子: 我的抽象类: packag
我正在尝试实现一个Moose :: Role类,其行为类似于
Java中的抽象类.我想在Role中实现一些方法,但是能够在具体类中覆盖这些方法.如果我尝试使用与扩展类时相同的样式,我会得到错误如果本地方法已经存在,则无法添加覆盖方法.这是一个例子:
我的抽象类: package AbstractClass; use Moose::Role; sub my_ac_sub { my $self = shift; print "In AbstractClass!n"; return; } 1; 我的具体课程: package Class; use Moose; with 'AbstractClass'; override 'my_ac_sub' => sub { my $self = shift; super; print "In Class!n"; return; }; __PACKAGE__->meta->make_immutable; 1; 然后: use Class; my $class = Class->new; $class->my_ac_sub; 难道我做错了什么?我想要完成的是应该以不同的方式完成的吗?我不想做什么? 解决方法
结果我错误地使用它.我打开了
a ticket并且显示了这样做的正确方法:
package Class; use Moose; with 'AbstractClass'; around 'my_ac_sub' => sub { my $next = shift; my $self = shift; $self->$next(); print "In Class!n"; return; }; __PACKAGE__->meta->make_immutable; 1; 进行此更改具有所需的效果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |