На Вашем первом проекте TDD существует две больших потери, время и персональная свобода
, Вы теряете время потому что:
Вы теряете персональную свободу потому что:
Hope это помогает
Используйте Moose :: Meta :: Attribute :: Native :: Trait :: Array и делегирование, например
handles => { my_array => 'elements' }
(через doy на #moose)
auto_deref
имеет нежелательное поведение - по-прежнему возвращает ссылку, если вы вызываете метод доступа в скалярном контексте.
Хотя вы можете использовать auto-deref
, Moose :: Manual :: BestPractices говорит, что это не лучший способ сделать это, и что вместо этого вам следует рассмотреть возможность использования Moose :: Meta :: Attribute ::
Используйте параметр auto_deref :
has my_field => (
is => 'ro', isa => 'ArrayRef[Str]',
auto_deref => 1,
# rest of options...
);
Обратите внимание, что иногда вы не получите обратно массив при использовании метода чтения, в зависимости от скалярного контекста или контекста списка выражение. Некоторое время назад я столкнулся с ситуацией, когда мне пришлось явно передать контекст массива в выражение, чтобы разыменование работало ... Я добавлю пример, если смогу его найти.