Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Mikhail Polykovsky                   2:5020/400     13 Nov 2003  18:22:13
 To : All
 Subject : Hаследование?
 -------------------------------------------------------------------------------- 
 
 
 Здравствуйте. Что-то не могу сообразить.
 У меня есть несколько модулей, в которых есть одинаковые функции
 (например, сохранение сообщения об ошибке, как в DBI). Писать их в
 каждом модуле не хочется. Объявить в базовом классе - не получилось,
 потому что обращаться к ним надо из модуля, а не из скрипта,
 вызывающего модуль. Писать везде SUPER тоже неудобно, уровень
 вложенности заранее неизвестен. Что посоветуете?
 
 Hеработающий вариант:
 ================================================================================
 ========
 {
 package Base;
 use strict;
 my $errstr;
 sub errstr{
         return $_[0]? $_[0]->{'_errstr'} : $errstr;
 }
 
 sub set_err{
         my ($self, $msg, $state, $result) = @_;
         if( $self ){
                 $self->{'_errstr'} = $msg;
         }else{
                 $errstr = $msg;
         }
         return $result; # usually undef;
 }
 
 }
 
 ################################################################################
 
 {
 package Child;
 
 use strict;
 use base qw(Base);
 
 sub new {
         my ($this, $strategy) = @_;
         return set_err(undef, 'Hе указан код стратегии')
                 unless $strategy;
 
         my $self = {};
 
         bless $self;
         return $self;
 }
 
 }
 
 my $c = new Child;
 
 ================================================================================
 ========
 З.Ы. Кстати, чем отличается use base от @ISA. Документация
 высказывается в смысле "что понравится, то и бери"...
 
 -- 
 Михаил Полыковский
 http://copi.ru/27690/
 Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
 --- ifmail v.2.15dev5.1
  * Origin: UTC (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Hаследование?   Mikhail Polykovsky   13 Nov 2003 18:22:13 
 Re: Hаследование?   Artem Chuprina   13 Nov 2003 18:41:20 
 Re[2]: Hаследование?   Mikhail Polykovsky   13 Nov 2003 19:26:28 
 Re[2]: Hаследование?   Andrew Alakozow   13 Nov 2003 20:50:54 
 Re: Re[2]: Hаследование?   Artem Chuprina   14 Nov 2003 14:58:55 
 Re[4]: Hаследование?   Mikhail Polykovsky   14 Nov 2003 16:31:57 
 Re: Hаследование?   Sergey Skvortsov   13 Nov 2003 20:03:18 
 Re[2]: Hаследование?   Mikhail Polykovsky   13 Nov 2003 20:28:32 
 Re: Re[2]: Hаследование?   Sergey Skvortsov   13 Nov 2003 20:56:34 
 Re[4]: Hаследование?   Mikhail Polykovsky   13 Nov 2003 22:05:19 
 Re: Re[4]: Hаследование?   Sergey Skvortsov   13 Nov 2003 23:27:55 
 Re: Hаследование?   Alexey Mahotkin   13 Nov 2003 23:43:28 
 Re: Hаследование?   Sergey Skvortsov   14 Nov 2003 16:54:12 
 Re[2]: Hаследование?   Andrew Alakozow   13 Nov 2003 21:00:52 
 Hаследование?   Andrew Alakozow   13 Nov 2003 21:08:26 
 Re: Hаследование?   Sergey Skvortsov   14 Nov 2003 16:58:33 
 Hаследование?   Andrew Alakozow   14 Nov 2003 18:32:34 
Архивное /ru.perl/9096575f6bfb.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional