[swift-users] How to resolve "type(of: instance)" being shadowed by "instance.type"?
Glen Huang
heyhgl at gmail.com
Sat Sep 23 00:10:04 CDT 2017
I have a class like this:
class File {
type: FileType
url: URL
func fetch(from server: Server) {
type(of: server).get(from: url)
}
}
However, it fails to compile with "Cannot call value of non-function type ‘File’” inside the body of fetch(from:). I believe the reason is that self.type shadows type(of: server).
Other than renaming the “type” property, is there any other way to work around it? I tried "Foundation.type(of: server)” and found out that it’s from the standard library and not Foundation. Is there a prefix that denotes the standard library?
A more general question, since this is clearly a function call, why would it be shadowed by self.type, which is clearly a property access?
I’m using Swift 4 in Xcode 9.
Regards,
Glen
More information about the swift-users
mailing list