2015-06-04 7 views
5

In swift erlaubt die if let-Syntax, Anweisungen nur auszuführen, wenn eine Variable einen bestimmten Typ hat. Zum BeispielVerwenden von if Syntax in switch-Anweisung

class A {...} 
class B: A {...} 
class C: A {...} 

func foo(thing: A) { 
    if let b = thing as? B { 
     // do something 
    }else if let c = thing as? C { 
     // do something else 
    } 
} 

Ist es möglich, dies mit einer Switch-Anweisung zu erreichen?

Ich habe so weit gekommen, aber die Variablen b und c A noch vom Typ, nicht zu B und C Stimmen:

func foo(thing: A) { 
    switch thing { 
    case let b where b is B: 
     // do something 
    case let c where c is C: 
     // do something else 
    default: 
     // do something else: 
    } 
} 
+3

'wenn let b = Sache wie B' Eigentlich ist das nicht legal. – matt

+2

Der richtige Weg, es zu tun ist, wenn b = Sache wie? B'. –

+0

Danke, ich habe meine Frage aktualisiert – Okapi

Antwort

11

Wenn alles, was Sie wissen wollen, ist, ob es ein B oder C Sie können einfach case is B und case is C sagen.

Wenn Sie erfassen und ablegen möchten, dann sagen Sie case let b as B und case let c as C.

+0

Und für eine gute Liste der Schalter Fallmuster und Verwendungen, siehe mein Buch: http://www.apeth.com/swiftBook/ch05.html#_switch_statement – matt