[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