Ich brauche zwei Protokolle zu erklären, sie beide associatedtypes haben:Wie teilt man einen zugeordneten Typ zwischen zwei Protokollen?
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?)
}
Mit dieser aktuellen Protokolldefinition, die associatedtype DataType
von MyView
ist nicht wirklich das gleiche wie das in MyLayout
:
extension MyView {
func doLayout() {
layout.computeLayout(with: self.data)
^^^^^^^^^
Cannot convert value of type 'Self.DataType' to expected argument type '_?'
}
}
Die Compiler sagt uns, dass der Typ nicht derselbe ist.
Gibt es eine Möglichkeit, einen zugeordneten Typ zwischen zwei Protokollen zu teilen, um mein Problem zu beheben? Vielen Dank.
vielleicht bedeuten Ihnen ein Protokoll zu machen, die von der anderen 2 – Alexander
@AlexanderMomchliov erbt - ich habe es schon versucht (https://gist.github.com/anonymous/58fb6e95549081ba8eff9c7fc81d6fc2) und es nicht mit dem gleichen Fehler. – MartinMoizard