gpt4 book ai didi

perl - 如何在 Perl 中使用 'use base' 继承子例程?

转载 作者:行者123 更新时间:2023-12-03 15:08:43 27 4
gpt4 key购买 nike

如何在 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";
}

Perl 提示/找不到 tbSub。

最佳答案

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com