我想替换子类中的父函数(Somefunc),所以当我调用 Main 过程时它应该失败。
在 Perl 中可以吗?
Code:
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
, use $self
代替$class
)。更好的是使用Moose http://search.cpan.org/dist/Moose/lib/Moose.pm,它解决了 Perl 中面向对象编程的很多问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)