Skip to content

Instantly share code, notes, and snippets.

@jtbandes
Last active July 29, 2016 21:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jtbandes/7624fef93eb23010c032b2d1fd3674be to your computer and use it in GitHub Desktop.
Save jtbandes/7624fef93eb23010c032b2d1fd3674be to your computer and use it in GitHub Desktop.
protocol P {
var dynamicTypeAsMember: P.Type { get }
}
struct T: P {}
extension P {
var dynamicTypeAsMember: P.Type {
return self.dynamicType
}
}
func type<T>(of value: T) -> T.Type {
return value.dynamicType
}
let t = T()
let p: P = T()
let typeofT = type(of: t) // == T.self
let typeofP = type(of: p) // == P.self???
t.dynamicTypeAsMember // == T.self
p.dynamicTypeAsMember // == T.self
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment