29.03.2012 12:22, Orlovsky Alexander пишет:
Не используйте AUTOLOAD
1. Это медленно.
Если запоминать сгенерированные методы, то не так уж медленно.
Это описано в книжке Д.Конвея Object Oriented Perl или, например тут,
http://habrahabr.ru/post/52532/
2. Его использование порождает более сложный код
Из руби, кстати его или уже выпилили или собираются.
28.03.2012, 13:21, "Nick Knutov"<[email protected]>:
Есть ряд объектов, у которых есть заранее известный, но иногда
меняющийся [в процессе разработки] список полей, для которых надо писать
геттеры вида
sub id { my $self = shift; return $self->{id}; }
Или с логикой чуть посложнее, но это еще один список полей и полностью
одинаковый код, кроме имени поля.
Возникла мысль генерить эти методы из заранее определенного списка на
этапе, например, загрузки модуля или компиляции кода. perldoc что?
Да, примерно также, как "генерятся" методы by demand в автолоуде, можно
из погенернить и не в автолоуде, а заранее.
Альтернативный вариант - сделать то же самое через AUTOLOAD, вот только
в гугле находятся несколько очень разных примеров, как это делается, и в
каждом говорится, что примеров есть разные, но вот именно этот способ
лучше и избавит от разных проблем и багов. So, как все же это надо делать?
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org