Ну или привязываться к имени пакета, и хранить уже в хэше.
https://gist.github.com/kadavr/eebff145f89116d5db8e
Но, что то мне эта идея вообще не нравится
29.12.2015, 22:08, "Evgeniy Vansevich" <[email protected]>:
Если правильно понял, то можно так.Но в моем примере,мы привязываемся к ситуации один импорт один use. Что не верно28.12.2015, 16:46, "Konstantin S. Uvarin" <[email protected]>:,--(Тут, понятное дело, 100500 проверок опущены, это псевдокод по сути, но он рабочий). Или как альтернатива - сделатьЕсли я правильно понимаю, import в такой ситуации вызовется после has, а не до, поэтому default в приведённом примере продолбается.Я бы делал тогда уж
use Moose;
our %defaults;sub import { shift; %defaults = @_ if @_ };has foo => is => "rw", default => sub { $defaults{foo} };sub BUILD {my $self = shift;foreach (keys %defaults) {$self->{$_} ||= $defaults{$_};};};Выглядит пострашнее, но работать вроде быстрее должно (хотя кто его знает, муз - надо бенчмарк делать).Но здесь возникает новая засада - а если модуль поюзан из разных мест, и там разные defaults?Т.е.
package Foo;use MyDefaults foo => exp(1); # e
.......package Bar;use MyDefaults foo => 4*atan2(1,1); #pi
......package Baz;use Foo;use Bar;И вот если вызовы Foo и Bar переставить, то результаты выполнения программы вызовут много слов на е... и пи... у того, кто это сделает.Так что я бы, наверное, ещё бы ругался на второй вызов import с непустыми параметрами.,--2015-12-28 15:05 GMT+02:00 Dmitry L. <[email protected]>:Привет!
Задача - передавать в Moose объект значения атрибутов по-умолчанию
через аргументы import:
use MyModule default_var1 => 123;
Подскажите, на сколько верно такое решение
https://gist.github.com/dim0xff/b40880664e62a71442b7 ?
Спасибо!
--
//wbr, Dmitry L.
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
