我正在尝试实现一个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;
难道我做错了什么?我想要完成的是应该以不同的方式完成的吗?我不想做什么?
解决方法
原文地址:https://www.jb51.cc/Perl/241733.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。