Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> многоуровневое наследование, как получить всех родителей? 
:(
    Опции темы
Ramirez
Дата 7.10.2010, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: 4
Всего: 5



Доброго всем!

если есть несколько классов, которые по цепочке наследуют друг от друга, как получить список всех родителей?
@ISA и SUPER позволяют обращаться только к вышестояшему родителю. А как узнать его родителей? Не создавать же обьект родительского класса и мотреть его @ISA?!

Заранее спасибо!

Это сообщение отредактировал(а) Ramirez - 7.10.2010, 18:14
PM ICQ   Вверх
KSURi
Дата 7.10.2010, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Что-то типа такого (не проверял):
Код

walk(@ISA);

sub walk {
  no strict 'refs';
  for(@_) {
    say;
    walk(@{$_ . '::ISA'})
  }
}


Это сообщение отредактировал(а) KSURi - 7.10.2010, 19:26


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
DurRandir
Дата 7.10.2010, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 335
Регистрация: 27.9.2009

Репутация: 14
Всего: 17



mro/MRO::Compat, в зависимости от версии перла. Там есть много полезных методов.

Это сообщение отредактировал(а) DurRandir - 7.10.2010, 23:14
PM   Вверх
gcc
Дата 8.10.2010, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



http://search.cpan.org/search?query=next&mode=all

писали что обычный use NEXT медленный и catalyst в отладке пишет, что надо заменить его на Class::C3::Adopt::NEXT (у меня для 5.8.9 он используется)

... еще в книге старой ("Рецепты для профессионалов" 3 издание, вродебы) было написано как использовать множественное многоуровневое наследование, там как-то 2 раза написать SUPER...

Это сообщение отредактировал(а) gcc - 8.10.2010, 09:19
PM WWW ICQ Skype GTalk Jabber   Вверх
Ramirez
Дата 8.10.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: 4
Всего: 5



DurRandir, gcc,  да спасибо, про MRO и C3 почитал. Много полезного умеют и, я так понимаю, должны работать быстро. Не осилил применить пока.

Сделал по методу KSURi, но без рекурсии:

Код

my $class = 'test1';
no strict 'refs';
while (@{$class . '::ISA'}) {
    warn @{$class . '::ISA'};
    $class = @{$class . '::ISA'}[0];
}

PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0529 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.