Каково различие между 'основой использования' и @ISA в Perl?

Мой преподаватель раньше говорил что-то как: глобальные переменные использования хорошо при использовании их правильно. Я не думаю, что когда-либо становился хорошим в использовании их правильно, таким образом, я редко использовал их вообще.

9
задан serenesat 25 February 2016 в 10:39
поделиться

3 ответа

Типичное использование @ISA :

package Foo;

require Bar;
our @ISA = qw/Bar/;

Прагмы base и parent загружают запрошенный класс и изменяют @ISA , чтобы включить его:

package Foo;

use base qw/Bar/;

Если вы хотите множественное наследование, вы можете предоставить более одного модуля для base или родительского :

package Foo;

use parent qw/Bar Baz/; #@ISA is now ("Bar", "Baz");

parent прагма является новой в Perl 5.10.1, но ее можно установить из CPAN, если у вас более старая версия Perl. Он был создан из-за того, что прагму base стало трудно поддерживать из-за «накопившегося в ней мусора». Вы не должны видеть разницы в базовом использовании между ними.

8
ответ дан 4 December 2019 в 13:48
поделиться

Я думаю, вам следует использовать прагму родительского вместо base , как было предложено в perldoc base .

4
ответ дан 4 December 2019 в 13:48
поделиться

из perldoc базы ...

package Baz;

use base qw( Foo Bar );

по существу эквивалентен

package Baz;

BEGIN {
   require Foo;
   require Bar;
   push @ISA, qw(Foo Bar);
}

Лично я использую base.

3
ответ дан 4 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: