Нет синтаксиса idiomatic для указания составного интерфейса типа утки. Тем не менее, обратите внимание, что все спецификации типов на самом деле являются просто текстом произвольной формы ; ссылка синтаксического анализатора типов YARD, приведенная в вопросе, является просто набором обычных или идиоматических синтаксисов для определения общих интерфейсов. Если вы думаете об умном способе определения этих типов (и это имеет смысл для ваших пользователей), вы можете это сделать. Возможно, что-то вроде #first#second
может работать или #first&#second
.
Однако я рекомендую создать конкретный тип для переноса этого специального интерфейса. Даже если вы на самом деле не используете тип во время выполнения, он будет служить объектом в вашем домене для объяснения интерфейса вашим пользователям. Например, создав class Foo
с двумя методами #first
и #second
, а затем задокументировав эти два метода, вы теперь можете использовать Foo
в качестве типа. В документации класса Foo вы могли бы объяснить, что он никогда не используется в коде и просто существует как «интерфейс», если это так. Вы также можете сделать Foo «модулем» для обозначения того, что это скорее «интерфейс» (или «протокол», если вы предпочитаете этот язык), чем конкретный тип.