Следующий код работает так, как я ожидал. Атрибут cached lazy очищается и перестраивается при изменении атрибута foo, от которого он зависит.
Как мне, однако, использовать сахар MX :: Declare для функции триггера? Определение foo как:
Результаты в классе, умирающем при компиляции (ниже). Что-то не так с объявлением анонимного метода?
Триггер должен быть CODE ref для атрибута (foo) в
C: /Strawberry/perl/site/lib/Moose/Meta/Attribute.pm строка 423
Moose :: Meta :: Attribute :: _ process_trigger_option ( 'Moose :: Meta :: Атрибут',
'foo', 'HASH (0x2a5d14c)') вызывается в C:
/Strawberry/perl/site/lib/Moose/Meta/Attribute.pm строка 299
Moose :: Meta :: Attribute :: _ process_options ( 'Moose :: Meta :: Атрибут',
'foo', 'HASH (0x2a5d14c)') вызывается в C: / Strawb
erry / perl / site / lib / Moose / Meta / Attribute.pm line 88
Moose :: Meta :: Attribute :: new ('Moose :: Meta :: Attribute', 'foo', 'trigger', 'MooseX :: Method :: Signatures :: Meta :: Methods
d = HASH (0x39a421c) ',' isa ',' Str ',' Definition_context ',
'HASH (0x3452184)', 'default', '', 'is', 'rw') вызывается в C: / Straw
berry / perl / site / lib / Moose / Meta / Attribute.pm line 114
Moose :: Meta :: Attribute :: interpolate_class_and_new ( 'Moose :: Meta :: Атрибут',
'foo', 'trigger', 'MooseX :: Method :: S
ignatures :: Meta :: Method = HASH (0x39a421c) ',' isa ',' Str ',' default ',' ',
'Definition_context', 'HASH (0x3452184)', 'is', 'r w') вызывается в
C: /Strawberry/perl/site/lib/Moose/Meta/Class.pm строка 704
Moose :: Meta :: Class :: _ process_new_attribute ( 'Moose :: Meta :: Class = HASH (0x38c79d4)',
'foo', 'trigger', 'MooseX :: Meth
od :: Подписи :: Meta :: Method = HASH (0x39a421c) ',' isa ',' Str ',
'default', '', Definition_context ',' HASH (0x3452184) ',' is ',' rw ')
вызывается в C: /Strawberry/perl/site/lib/Moose/Meta/Class.pm строка 697
Moose :: Meta :: Class :: _ process_attribute ( 'Moose :: Meta :: Class = HASH (0x38c79d4)',
'foo', 'trigger', 'MooseX :: Method ::
Подписи :: Meta :: Method = HASH (0x39a421c) ',' isa ',' Str ',' default ',
'', 'definition_context', 'HASH (0x3452184)', 'is', 'rw') вызывается в
C: /Strawberry/perl/site/lib/Moose/Meta/Class.pm line 566
Мус :: Мета :: Класс :: add_attribute ( 'Мус :: Мета :: Класс = HASH (0x38c79d4)',
'foo', 'trigger', 'MooseX :: Method :: Signa
tures :: Meta :: Method = HASH (0x39a421c) ',' isa ',' Str ',' default ',' ',
'Definition_context', 'HASH (0x3452184)', 'is', 'rw') вызывается в
C: /Strawberry/perl/site/lib/Moose.pm line 77
Moose :: has ('Moose :: Meta :: Class = HASH (0x38c79d4)', 'foo', 'isa', 'Str', 'is', 'rw', 'trigger', 'MooseX :: Method: : Si,
gnatures :: Meta :: Method = HASH (0x39a421c) ',' default ',' ') вызывается в
C: /Strawberry/perl/site/lib/Moose/Exporter.pm строка 356
Moose::has('foo', 'isa', 'Str', 'is', 'rw', 'trigger', 'MooseX::Method::Signatures::Meta::Method=HASH(0x39a421c) ',
'default', '') вызывается в mx_declare.pl строка 5
main :: ANON () вызывается на C: /Strawberry/perl/site/lib/MooseX/Declare/Syntax/MooseSetup.pm
81
MooseX :: Объявляет :: Синтаксис :: MooseSetup :: ANON ( 'CODE (0x38c3a94)')
вызывается в строке mx_declare.pl 13