[swift-users] Switch based on let

Nate Birkholz nbirkholz at gmail.com
Fri Jul 8 10:19:07 CDT 2016


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

On Fri, Jul 8, 2016 at 8:15 AM, Dan Loewenherz <dan at 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 at 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 at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
>>
>>
>


-- 
Nate Birkholz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160708/b9cd5eca/attachment.html>


More information about the swift-users mailing list