perl – 如何使所有继承的方法返回子类对象?

前端之家收集整理的这篇文章主要介绍了perl – 如何使所有继承的方法返回子类对象?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在 HTML::Element之上编写一个hOCR :: Element包来处理 hOCR内容.因此,来自hOCR :: Element类的对象继承属于HTML :: Element的所有方法.

但是由于HTML :: Element(例如find_by_tag_name和look_down)中存在许多返回HTML :: Element对象的基本方法,我发现自己必须为每个这样的方法编写一个相应的hOCR :: Element包装器方法,它只是映射通过祝福作为hOCR它作为HTML给出了什么.

例如:

package hOCR::Element;

use HTML::Element;
use parent 'HTML::Element';

sub new {
  my ($class,%params) = @_;
  my $self = $class->SUPER::new (%params);
  return bless $self,$class;
}

sub look_down { 
  my $self = shift;
  return map { bless $_,'hOCR::Element' } $self->SUPER::look_down (@_);
}

1;

我怎样才能让子类继承其基类中的所有方法,使得这些相关方法返回子类对象而不是基类对象,而不必为每个这样的父方法编写包装器?

解决方法

sub look_down { 
    my $self = shift;
    return bless $self->SUPER::look_down (@_),HTML::Element ;
}

猜你在找的Perl相关文章