Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save donarb/383568ecaf86c9212a9f760a2ff151a4 to your computer and use it in GitHub Desktop.
Save donarb/383568ecaf86c9212a9f760a2ff151a4 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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment