перегрузки (@overload)?
Есть, функция первый аргумент, которой либо тип A, либо B. В зависимости от типа первого аргумента, тип второго аргумента должен быть либо C, либо D.
В варианте с перегрузками это выглядит так:
@overload
def func(first: A, second: C): …
@overload
def func(first: B, second: D):..
А почему без перегрузок?
Я использую библиотеку overtake, которая реализует реальный механизм перегрузок. И перегрузки уже есть по количеству и типу других аргументов. А данные две перегрузки должны иметь одинаковую имплементацию, просто хочу выразить зависимость одного типа от другого.
Так а какая разница, перегрузки из тайпинга никак не должны влиять на рантайм
В данном случае влияют, потому что при использовании overtake у этих перегрузок появляется реальное тело.
сделать две функции, выглядит странн
Имплементация общая на такие пары, она generic. Тайпхинтинг в данном случае интересен только для статик анализа
и что, A и C никак явно не матчатся?
В смысле явно?
Обсуждают сегодня