Не могу понять, как работают типы протоколов c в Swift. То же решение в Java или Kotlin будет работать без проблем.
protocol ResultProtocol {
associatedtype T: ResultTypeProtocol
var result: T? { get set }
}
protocol ResultTypeProtocol {
func didGet()
}
protocol InteractorProtocol: ResultProtocol where T == InteractorResultProtocol {
func someLogicRelatedToInteractor()
}
protocol InteractorResultProtocol: ResultTypeProtocol {
func interactorResult()
}
class Interactor: InteractorProtocol {
typealias T = InteractorResultProtocol
var result: InteractorResultProtocol?
func someLogicRelatedToInteractor() {}
}
Я получаю 2 ошибки в моем коде. Во-первых, когда я помещаю ограничение generi c на другой протокол
Вторая ошибка заключается в том, что мой класс Interactor не соответствует протоколу. Когда я нажимаю «исправить», он добавляет еще один «typealias T = type» и хочет, чтобы я снова указал T.
Я хочу знать, есть ли другой способ добиться этого в Swift или как решить эту проблему. Идея заключается в том, чтобы расширить мои интерактивные классы с помощью свойства свойства generi c, которое используется в качестве делегата для других слоев. Interactor используется через его протокол и внедряется во все другие классы.