У меня есть класс Moose с атрибутом lazy_build
. Значение этого атрибута является функцией другого (не ленивого) атрибута.
Предположим, кто-то создает экземпляр класса со значением 42 для обязательного атрибута. Затем они запрашивают ленивый атрибут, который рассчитывается как функция от 42. Затем у них есть смелость изменить первый атрибут!
Ленивый уже построен, поэтому сборщик больше не будет вызываться, а атрибут lazy устарел.
Теперь у меня есть решение, в котором я сохраняю флаг «грязный» для обязательного атрибута, а средство доступа для ленивого проверяет флаг «грязный» и восстанавливает его при необходимости.
Однако, это похоже на большую работу. Есть ли способ справиться с этим в Moose, например используя черты?