gpt4 book ai didi

perl - 如何在 Perl 中用子类覆盖父类函数?

转载 作者:行者123 更新时间:2023-12-04 14:52:46 26 4
gpt4 key购买 nike

我想替换子类中的父函数(Somefunc),所以当我调用 Main 过程时它应该会失败。

在 Perl 中可以吗?

代码:

package Test;

use strict;
use warnings;

sub Main()
{
SomeFunc() or die "Somefunc returned 0";
}

sub SomeFunc()
{
return 1;
}

package Test2;

use strict;
use warnings;

our @ISA = ("Test");

sub SomeFunc()
{
return 0;
}

package main;

Test2->Main();

最佳答案

当您调用 Test2->Main() ,包名作为第一个参数传递给被调用函数。您可以使用该参数来处理正确的功能。

sub Main
{
my ($class) = @_;
$class->SomeFunc() or die "Somefunc returned 0";
}

在本例中, $class将是 "Test2" , 所以你会调用 Test2->SomeFunc() .更好的解决方案是使用实例(即 bless 中的对象 Test::new ,使用 $self 而不是 $class )。更好的是使用 Moose ,它解决了 Perl 中面向对象编程的很多问题。

关于perl - 如何在 Perl 中用子类覆盖父类函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2305386/

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