<div>Если правильно понял, то можно так.</div><div><a href="https://gist.github.com/kadavr/dba006acf5816230ddb0">https://gist.github.com/kadavr/dba006acf5816230ddb0</a></div><div> </div><div>Но в моем примере,мы привязываемся к ситуации один импорт один use. Что не верно</div><div> </div><div>28.12.2015, 16:46, "Konstantin S. Uvarin" <khedin@gmail.com>:</div><blockquote type="cite"><div><div><div><div><div><div><div>Если я правильно понимаю, import в такой ситуации вызовется после has, а не до, поэтому default в приведённом примере продолбается. <br /><br /></div>Я бы делал тогда уж <br /><br />use Moose;<br />our %defaults; </div><div>sub import { shift; %defaults = @_ if @_ };</div>has foo => is => "rw", default => sub { $defaults{foo} };</div></div>(Тут, понятное дело, 100500 проверок опущены, это псевдокод по сути, но он рабочий). Или как альтернатива - сделать <br /><br /></div><div>sub BUILD {</div><div>    my $self = shift;</div><div>    foreach (keys %defaults) {</div><div>         $self->{$_} ||= $defaults{$_};</div><div>    };</div><div>};<br /><br /></div><div>Выглядит пострашнее, но работать вроде быстрее должно (хотя кто его знает, муз - надо бенчмарк делать). </div><div> </div>Но здесь возникает новая засада - а если модуль поюзан из разных мест, и там разные defaults?<br /><br /></div><div>Т.е. <br /><br />package Foo; </div><div>use MyDefaults foo => exp(1); # e<br />.......</div><div>package Bar;</div><div>use MyDefaults foo => 4*atan2(1,1); #pi<br />......</div><div>package Baz;</div><div>use Foo;</div><div>use Bar;</div><div><br /><div><div><div><div><div>И вот если вызовы Foo и Bar переставить, то результаты выполнения программы вызовут много слов на е... и пи... у того, кто это сделает.<br /><br /></div><div>Так что я бы, наверное, ещё бы ругался на второй вызов import с непустыми параметрами. </div><div> </div></div></div></div></div></div></div><div><br /><div><span>2015-12-28 15</span>:05 GMT+02:00 Dmitry L. <span><<a href="mailto:dim0xff@gmail.com" target="_blank">dim0xff@gmail.com</a>></span>:<br /><blockquote style="margin:0 0 0 0.8ex;border-left:1px #ccc solid;padding-left:1ex;">Привет!<br /> <br /> Задача - передавать в Moose объект значения атрибутов по-умолчанию<br /> через аргументы import:<br /> <br /> use MyModule default_var1 => 123;<br /> <br /> <br /> Подскажите, на сколько верно такое решение<br /> <a href="https://gist.github.com/dim0xff/b40880664e62a71442b7" target="_blank">https://gist.github.com/dim0xff/b40880664e62a71442b7</a> ?<br /> <br /> Спасибо!<br /> <span><font color="#888888"><br /> --<br /> //wbr, Dmitry L.<br /> --<br /> Moscow.pm mailing list<br /> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" target="_blank">http://moscow.pm.org</a><br /> </font></span></blockquote></div></div>,<span>-- <br />Moscow.pm mailing list<br /><a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/">http://moscow.pm.org</a><br /></span></blockquote>