Mi piacerebbe essere in grado di dichiarare un protocollo come questo:accesso tipo di un protocollo personalizzato associato a una clausola in cui sui tipi generici a Swift
protocol TypedHashable {
typealias Type
}
e utilizzarlo in una clausola WHERE come questo:
class UsingTypedHashable<K: TypedHashable, V: TypedHashable where K.Type == V.Type> {
...
}
per un motivo non riesco a vedere, il compilatore mi dà il seguente errore sotto il punto di "K.Type":
previsto ':' o '==' per indi Cate una conformità o lo stesso tipo di fabbisogno
Ho visto il codice utilizzando tipi associati dichiarati utilizzando tipealias nel protocollo che accede a quelle typealias nella clausola where per tipo assertion. Ecco un po 'di codice che compila e che fanno questo utilizzando la sequenza di protocollo standard Swift (e generatore ...):
func toArray<S : Sequence,
T where T == S.GeneratorType.Element>
(seq : S) -> T[] {
var arr = T[]()
for x in seq {
arr.append(x)
}
return arr
}
(Nota: il codice da https://schani.wordpress.com/author/schani/)
Il codice precedente utilizza la sequenza dichiarato associato tipo del protocollo Sequence il cui nome è "GeneratorType".
Qualche idea?
Grazie, non capisco perché non l'ho visto, ma l'hai fatto! – sebastienhamel