Подтвердить что ты не робот

Что такое массив @ISA в perl?

our @ISA = "Critter";

В каком состоянии я буду использовать @ISA?

и почему our @ISA?.

4b9b3361

Ответ 1

Чтобы расширить комментарий Mat, такие вещи подробно описаны в perldocs.

Относительно @ISA, вот что он говорит:

Класс - это просто пакет

...

Каждый пакет содержит специальный массив с именем @ISA. Массив @ISAсодержит список родительских классов этого класса, если таковые имеются. Этот массив когда Perl делает разрешение метода, которое мы рассмотрим позже.

Можно вручную установить @ISA, и вы можете увидеть это в более ранних версиях Perl-код. В гораздо более старом коде также используется прагма base. Для нового кода, мы рекомендуем использовать прагму parent для объявления ваших родителей. Эта прагма позаботится о настройке @ISA. Он также загрузит родительских классов и убедитесь, что пакет не наследуется от сам по себе.

Однако родительские классы установлены, переменная package @ISA будет содержат список этих родителей. Это просто список скаляров, каждая из которых представляет собой строку, соответствующую имени пакета.

our и @ISA идут рука об руку, потому что ожидается, что @ISA будет переменной пакета.

Ответ 2

@ISA означает "стоять", это означает, что массив содержит пакет родителей