#swift
#swift
Вопрос:
До сих пор мне удавалось создавать подкласс A, определяя только общий тип как String или любой другой тип:
protocol Protocol {}
extension String : Protocol {}
class A<T:Protocol> {}
class B : A<String> {}
Должен ли я указывать универсальный тип или я могу просто наследовать его без указания?
Ответ №1:
Если вы хотите сделать свой B
класс также универсальным, вам следует ограничить B
для протокола, который является или наследуется от Protocol
, а затем использовать этот общий параметр для ограничения A
class B<T: Protocol>: A<T> {}
protocol P: Protocol {}
class B<T:P>: A<T> {}