Ага, только он в ~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, Ilya Chesnokov -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
