Мы используем классы Moose, которые сериализуют итераторы в различные выходные форматы.Мы описываем итератор как атрибут:
has iterator => (
is => 'ro',
isa => 'CodeRef',
required => 1,
);
До сих пор это работало нормально, но в последнее время мы использовали Iterator :: Simple для подготовки итераторов для последующего использования.Это означает, что мы можем написать:
has iterator => (
is => 'ro',
isa => 'CodeRef|Iterator::Simple::Iterator',
required => 1,
);
и позволить нашим сериализаторам правильно принимать класс итератора.Однако, это кажется неполным решением.
Есть ли способ в Moose указать ограничение, что атрибут должен вызываться?Я подозреваю, что это возможно с Moose :: Util :: TypeConstraints и использованием overload :: Overloaded на &{}
, чтобы проверить, но я хотел бы знать, если кто-то создалмодуль, чтобы сделать это уже, или если есть стандартный способ проверки Moose для этого.