我要让延伸DBI一个单独的类。 我应该做这样的事情:
use base 'Class::Singleton';
our @ISA = ('DBI');
或这个:
our @ISA = ('Class::Singleton', 'DBI');
或者是其他东西?
真的不知道“基地使用”和“ISA”之间的区别是什么。
我要让延伸DBI一个单独的类。 我应该做这样的事情:
use base 'Class::Singleton';
our @ISA = ('DBI');
或这个:
our @ISA = ('Class::Singleton', 'DBI');
或者是其他东西?
真的不知道“基地使用”和“ISA”之间的区别是什么。
典型的使用@ISA
是
package Foo;
require Bar;
our @ISA = qw/Bar/;
所述base
和parent
编译指示既加载所请求的类和修改@ISA
到包含它:
package Foo;
use base qw/Bar/;
如果你想多继承,你可以提供一个以上的模块base
或parent
:
package Foo;
use parent qw/Bar Baz/; #@ISA is now ("Bar", "Baz");
该parent
编译为新的和Perl 5.10.1,但它是从CPAN安装,如果你有Perl的一个旧版本。 它的建立,因为base
编译已因难以维持“那个曾在其积累的残余。” 你不应该看到两者之间的基本使用差别。
我想你应该使用parent
编译,而不是base
作为已被提出perldoc base
。
从基本的的perldoc ...
package Baz;
use base qw( Foo Bar );
基本上等同于
package Baz;
BEGIN {
require Foo;
require Bar;
push @ISA, qw(Foo Bar);
}
就个人而言,我使用基地。
如果你想继承父类,那么你就需要加载和修改@ISA。 这两个步骤的照顾,当您使用基地。 基地加载模块,为您和相应地修改@ISA。 否则,你将需要修改@ISA并加载在自己的父模块。
下面两个是等价的:
use base "Parent";
和
require Parent;
@ISA = ("Parent");