Быстрый универсальный функционал с перекрывающимися ограничениями типов
У меня есть эта иерархия протоколов:
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