Thanks, I never seem to know when to use .self.

On Fri, Jul 8, 2016 at 8:15 AM, Dan Loewenherz <d...@lionheartsw.com> wrote:

> To my knowledge, you can’t do exactly what you’re trying to do, but this
> is close:
>
> for subclassObject in objects {
>
>     switch subclassObject.self {
>
>     case is Subclass1:
>
>         doSomethingWith(subclassObject as! Subclass1)
>
>
>     case is Subclass2:
>
>         doSomethingWith(subclassObject as! Subclass2)
>
>
>     case is Subclass3:
>
>         doSomethingWith(subclassObject as! Subclass3)
>
>
>     default:
>
>         break
>
>     }
>
> }
>
> On Fri, Jul 8, 2016 at 10:11 AM, Nate Birkholz via swift-users <
> swift-users@swift.org> wrote:
>
>> This looks like it doesn't work (swift 2.x), but wanted to be sure it's
>> not supported:
>>
>> class Superclass {}
>> class Subclass1 : Superclass {}
>> class Subclass2 : Superclass {}
>> class Subclass3 : Superclass {}
>>
>> let sc1 = Subclass1()
>> let sc2 = Subclass2()
>> let sc3 = Subclass3()
>>
>> let objects : [Superclass] = [sc1, sc2, sc3]
>>
>> for subclassObject in objects {
>>     switch subclassObject {
>>     case let object = subclassObject as? Subclass1:
>>         doSomethingWith(object)
>>     case let object = subclassObject as? Subclass2:
>>         doSomethingWith(object)
>>     case let object = subclassObject as? Subclass3:
>>         doSomethingWith(object)
>>     default:
>>         return
>>     }
>> }
>> This gives an error, expecting a colon (:) after object on every case.
>>
>> I wanted to be sure I wasn't missing something in my syntax (nor some
>> obvious-to-others reason this isn't supported) before going to swift
>> evolution.
>>
>>
>> --
>> Nate Birkholz
>>
>> _______________________________________________
>> swift-users mailing list
>> swift-users@swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
>>
>>
>


-- 
Nate Birkholz
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to