作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 Perl 中应用“使用基础”来继承某些基础模块的子模块?
我习惯了 C++ 继承机制,我为此搜索的所有网站都造成了更多的困惑,然后提供了帮助。我想做如下的事情:
#! /usr/bin/perl
#The base class to inherit from
use strict;
use warnings;
package 'TestBase';
#-------------------------------
sub tbSub
{
my ($self, $parm) = @_;
print "\nTestBase: $parm\n";
}
1;
#! /usr/bin/perl
#The descendent class
use strict;
use warnings;
use base qw(TestBase);
sub main;
sub mySub;
#-------------------------------
#Entry point...
main();
#---code------------------------
sub main
{
mySub(1);
tbSub(2);
mySub(3);
}
#-------------------------------
sub mySub
{
my $parm = shift;
print "\nTester: $parm\n";
}
最佳答案
C++ 机制与 Perl 机制没有太大区别:要使用继承,您需要两个类:基类和继承类。但是你没有任何后代类。
您还缺少构造函数。与 C++ 不同,Perl 不会为您提供默认构造函数。
您的基类包含错误的语法错误,所以我猜您在发布之前没有尝试代码。
最后,正如 tsee 已经观察到的,你必须让 Perl 知道你想要一个函数调用还是一个方法调用。
你真正想要的看起来像这样:
my $foo = TestDescendent->new();
$foo->main();
package TestBase;
sub new {
my $class = shift;
return bless {}, $class;
}
sub tbSub
{
my ($self, $parm) = @_;
print "\nTestBase: $parm\n";
}
package TestDescendent;
use base 'TestBase';
sub main {
my $self = shift;
$self->mySub( 1 );
$self->tbSub( 2 );
$self->mySub( 3 );
}
sub mySub
{
my $self = shift;
my $parm = shift;
print "\nTester: $parm\n";
}
1;
关于perl - 如何在 Perl 中使用 'use base' 继承子例程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/258251/
我是一名优秀的程序员,十分优秀!