Быстрый универсальный функционал с перекрывающимися ограничениями типов

У меня есть эта иерархия протоколов:

protocol A {}

protocol B: A {}

что будет, если у меня будет 2 следующих функции:

func myFunc<T : A where T: B>( object: T){ ... }
func myfunc<T : A>( object: T){ ... }

Какая функция будет выполнена, если я позвоню

myFunc( object: myInstance ) 

с myInstance в соответствии с протоколом B, В этом случае myInstance соответствует 2 ограничениям.

Спасибо

1 ответ

Решение

Общее правило заключается в том, что компилятор пытается выбрать наиболее конкретную / наиболее ограниченную перегрузку.

Для вашего примера выше, это будет первая версия myFunc

Другие вопросы по тегам