[swift-users] How to resolve "type(of: instance)" being shadowed by "instance.type"?
Glen Huang
heyhgl at gmail.com
Sat Sep 23 00:13:22 CDT 2017
Ah, how come I never thought about trying that!?
Thanks!
Regards,
Glen
> On 23 Sep 2017, at 1:10 PM, Slava Pestov <spestov at apple.com> wrote:
>
>
>> On Sep 22, 2017, at 10:10 PM, Glen Huang via swift-users <swift-users at swift.org> wrote:
>>
>> 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?
>
> The standard library module is named ‘Swift’, so ‘Swift.type(of:)’ should do the trick.
>
>>
>> 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
>> _______________________________________________
>> swift-users mailing list
>> swift-users at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
>
More information about the swift-users
mailing list