加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl / Moose中,如何将修饰符应用于所有子类的方法?

发布时间:2020-12-15 21:33:27 所属栏目:大数据 来源:网络整理
导读:我有一个旨在被子类化的Moose类,每个子类都必须实现一个“执行”方法.但是,我想将一个方法修饰符应用于我的类中的execute方法,以便它适用于所有子类中的execute方法.但是当方法被覆盖时,方法修饰符不会被保留.有没有办法确保我的类的所有子类将我的方法修饰
我有一个旨在被子类化的Moose类,每个子类都必须实现一个“执行”方法.但是,我想将一个方法修饰符应用于我的类中的execute方法,以便它适用于所有子类中的execute方法.但是当方法被覆盖时,方法修饰符不会被保留.有没有办法确保我的类的所有子类将我的方法修饰符应用于其执行方法?

示例:在一个超类中,我有这个:

before execute => sub {
    print "Before modifier is executing.n"
}

然后,在一个子类:

sub execute {
    print "Execute method is running.n"
}

当调用execute方法时,它并没有说明“before”修饰符.

解决方法

这就是增加方法修饰符.你可以把它放在你的超类中:
sub execute {
  print "This runs before the subclass code";
  inner();
  print "This runs after the subclass code";
}

然后,而不是允许你的子类直接覆盖执行,你可以增加它:

augment 'execute' => sub {
  print "This is the subclass method";
};

基本上它给你的功能就像周围的修饰符,除了父/子关系改变了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读