мне нужно объявить два протокола, оба они имеют associatedtypes:Как передать связанный тип между двумя протоколами?
protocol MyView {
associatedtype DataType
associatedtype LayoutType : MyLayout
var data: DataType { get }
var layout: LayoutType { get }
func doLayout()
}
protocol MyLayout {
associatedtype DataType
func computeLayout(with data: DataType?)
}
С этим текущим определением протокола, то associatedtype DataType
из MyView
не совсем такой же, как тот, в MyLayout
:
extension MyView {
func doLayout() {
layout.computeLayout(with: self.data)
^^^^^^^^^
Cannot convert value of type 'Self.DataType' to expected argument type '_?'
}
}
компилятор говорит нам, что тип не тот.
Есть ли способ поделиться связанным типом между двумя протоколами, чтобы исправить мою проблему? Благодарю.
возможно вы имеете в виду, чтобы сделать протокол, который наследуется от другого 2 – Alexander
@AlexanderMomchliov - Я уже пробовал его (https://gist.github.com/anonymous/58fb6e95549081ba8eff9c7fc81d6fc2) и он терпит неудачу с такой же ошибкой. – MartinMoizard