Filter::AutoImport — различия между версиями

м
 
(не показана одна промежуточная версия этого же участника)
Строка 3: Строка 3:
 
<tt>Filter::AutoImport</tt> — фильтр для автообъявления часто используемых переменных в методах.
 
<tt>Filter::AutoImport</tt> — фильтр для автообъявления часто используемых переменных в методах.
  
Ссылка на исходный код: [{{SVN|vitaphoto/branch/solstice/lib-sway/Filter/AutoImport.pm|markup}} Filter::AutoImport] ([{{SVN|vitaphoto/branch/solstice/lib-sway/Filter/AutoImport.pm|co}} скачать]).
+
Ссылка на исходный код: [{{SVN|vitaphoto/solstice/lib-sway/Filter/AutoImport.pm|markup}} Filter::AutoImport] ([{{SVN|vitaphoto/solstice/lib-sway/Filter/AutoImport.pm|co}} скачать]).
  
 
== Как надо использовать Filter::AutoImport ==
 
== Как надо использовать Filter::AutoImport ==
Строка 45: Строка 45:
  
 
[[Категория:Perl]]
 
[[Категория:Perl]]
[[Категория:Разработка]]
+
[[Категория:Архив]]

Do you want to try some new features? By joining the beta, you will get access to experimental features, at the risk of encountering bugs and issues.

Ок Нет, спасибо

Текущая версия на 15:42, 20 июня 2016

Название

Filter::AutoImport — фильтр для автообъявления часто используемых переменных в методах.

Ссылка на исходный код: Filter::AutoImport (скачать).

Как надо использовать Filter::AutoImport

use Filter::AutoImport [ОПЦИИ] qw($www $self->www $cfg $self->www->config);

Где ОПЦИИ могут содержать:

-file_size_limit => 0x1000000
лимит размера файла.
-inherit
в текущем пакете унаследовать импорты (но не опции!) от текущего значения @ISA.
-all_subs
обработать все функции (sub {}), а не только использующие символ $self.

use Filter::AutoImport без аргументов идентичен вызову с 1 опцией -inherit.

Определяются только те переменные, которые нужны, по умолчанию только в методах. Методами считаются функции, использующие символ $self (обычно my $self = shift).

Межимпортные зависимости теперь тоже отслеживаются, т.е. можно писать

use Filter::AutoImport qw($cfg $www->config $www $self->www);

Как НЕ надо использовать Filter::AutoImport

Нужно понимать, что если символ, используемый в подстановке, в функции будет определён с более ограниченной областью видимости, чем вся функция, то и импорт попадёт в ту же область видимости.

Также, очевидно, неразумно делать подстановочные выражения дающими побочные эффекты, потому что, строго говоря, порядок их подстановки не определён, хотя и гарантируется, что выражение будет подставлено после первого упоминания всех символов, в нём использумых.

Очевидно также, что Filter::AutoImport не может выяснять логику работы ваших функций, и поэтому первое упоминание символа, используемое в подстановке, должно содержать присваивание ему значения, пригодного для определения самой подстановки. Иными словами, вместе с Filter::AutoImport следующий код не проканает:

my $self;
$self = shift;

Зависимости

Фильтр основан на использовании библиотеки PPI. Также требуются модули Filter::Util::Call, Carp и Scalar::Util.