代码之家  ›  专栏  ›  技术社区  ›  Miollnyr

如何在Perl中用子类重写父类函数?

  •  6
  • Miollnyr  · 技术社区  · 15 年前

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

    在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();
    
    2 回复  |  直到 11 年前
        1
  •  4
  •   undefinedvariable LukáÅ¡ Lalinský    11 年前

    Test2->Main()

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

    $class "Test2" Test2->SomeFunc() bless Test::new $self Moose

        2
  •  3
  •   friedo    15 年前

    -> Test2->Main()

    package Test;
    
    use strict;
    use warnings;
    
    sub Main
    {
        my $class = shift;
        $class->SomeFunc() or die "Somefunc returned 0";
    }
    
    sub SomeFunc
    {
        return 1;
    }
    
    package Test2;
    
    our @ISA = ("Test");
    
    sub SomeFunc
    {
        return 0;
    }
    
    package main;
    
    Test2->Main();
    

    perlboot perltoot