Почему не работает? Это BEGIN{}, если я правильно помню, не наследуется,
но прописываем, например, в конструктор, в новом конструкторе вызываем
конструктор предка и всё должно работать.
Впрочем, наследования у меня тоже нигде нет :)
28.03.2012 18:23, Dmitry Karpich написал:
On Mar 28, 2012, at 2:08 PM, Nick Knutov wrote:
И Class::Accessor не надо.
А вот в отквотированном ниже коде я минусов не вижу.
наследование. Оно не работает.
Я как-то давненько писал что-то подобное
http://search.cpan.org/perldoc?Object::Botox
Но не стоит этим пользоваться.
Медленно.
Возьмите Moose или *Acc-что-то там.
Митяй.
btw, мне совершенно не нужен контроль ro/rw и у меня нет сеттеров.
28.03.2012 16:03, Ilya Chesnokov написал:
Ага, только он в ~6 раз быстрее Class::Accessor - а так не надо, конечно ;)
28 марта 2012 г. 13:54 пользователь Nick Knutov<[email protected]> написал:
Вещи, имеющие синтаксис вида
has 'x' => (is => 'rw', isa => 'Int');
has 'y' => (is => 'rw', isa => 'Int');
не вариант вообще. Это плохо, это многобукв, так писать не надо.
28.03.2012 15:52, Alexandr Alexeev написал:
https://metacpan.org/module/Mouse умеет это и кое-что другое. Работает
быстро, так что не путать с Moose.
28 марта 2012 г. 13:43 пользователь Гнатына Александр<[email protected]
<mailto:[email protected]>> написал:
package My::Base;
sub _prop_simple_call{
my $self = shift;
my $name = shift;
if(@_){
$self->{$name} = $_[0];
}
return $self->{$name};
}
sub _make_simple_props{
my $class = shift;
my @names = @{shift||[]};
for my $name(@names){
no strict "refs";
my $func = $class.'::'.$name;
*$func = sub {
my $self = shift;
return $self->_prop_simple_call($name, @_);
}
}
}
package My::Some;
use base My::Base;
__PACAKGE__->_make_simple_props([qw(id name title)]);
В Срд, 28/03/2012 в 15:21 +0600, Nick Knutov пишет:
> Есть ряд объектов, у которых есть заранее известный, но иногда
> меняющийся [в процессе разработки] список полей, для которых надо
писать
> геттеры вида
>
> sub id { my $self = shift; return $self->{id}; }
>
> Или с логикой чуть посложнее, но это еще один список полей и
полностью
> одинаковый код, кроме имени поля.
>
> Возникла мысль генерить эти методы из заранее определенного списка
на
> этапе, например, загрузки модуля или компиляции кода. perldoc что?
>
> Альтернативный вариант - сделать то же самое через AUTOLOAD, вот
только
> в гугле находятся несколько очень разных примеров, как это
делается, и в
> каждом говорится, что примеров есть разные, но вот именно этот
способ
> лучше и избавит от разных проблем и багов. So, как все же это
надо делать?
>
> --
> Best Regards,
> Nick Knutov
> http://knutov.com
> ICQ: 272873706
> Voice: +7-904-84-23-130
--
Moscow.pm mailing list
[email protected]<mailto:[email protected]> | http://moscow.pm.org
--
С уважением, Александр
Личный блог: http://eax.me/
Мой форум: http://it-talk.org/
Мой Twitter: http://twitter.com/afiskon
--
Best Regards,
Nick Knutov
http://knutov.com
ICQ: 272873706
Voice: +7-904-84-23-130
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
--
Best Regards,
Nick Knutov
http://knutov.com
ICQ: 272873706
Voice: +7-904-84-23-130
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
--
Best Regards,
Nick Knutov
http://knutov.com
ICQ: 272873706
Voice: +7-904-84-23-130
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org