Skip to content

Instantly share code, notes, and snippets.

@troystribling
Last active April 28, 2022 20:55
Show Gist options
  • Save troystribling/26cf6a0510454eda1af0 to your computer and use it in GitHub Desktop.
Save troystribling/26cf6a0510454eda1af0 to your computer and use it in GitHub Desktop.
A swift protocol with associated type used as type parameter in generic function
protocol Thing {
typealias argType
func doit(val:argType) -> argType
}
class IntThing : Thing {
func doit(val: Int) -> Int {
return val + 1
}
}
func doThing<A:Thing>(thing:A, val:A.argType) -> A.argType {
return thing.doit(val)
}
doThing(IntThing(), 2)
@sevenday83
Copy link

@pejalo, @ankits16 you should look Type Erasure to achieve this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment