switch statement for example ciclo swift swift2 switch-statement swift3 conditional-binding

swift - statement - Coincidencia de patrón y vinculación condicional en una sola instrucción Switch



switch swift 4 (1)

¿Hay alguna manera de escribir este if / else if / else ladder como una instrucción switch?

let x: Any = "123" if let s = x as? String { useString(s) } else if let i = x as? Int { useInt(i) } else if let b = x as? Bool { useBool(b) } else { fatalError() }

Aquí está mi intento:

switch x { case let s where s is String: useString(s) case let i where i is Int: useInt(i) case let b where b is Bool: useBool(b) default: fatalError() }

Elige con éxito el camino correcto, pero s / i / b todavía son del tipo Any . El cheque is no tiene ningún efecto al lanzarlos. ¡Esto me obliga a forzar el lanzamiento con as! antes del uso.

¿Hay alguna manera de activar el tipo y vincularlo a un nombre, todo en una declaración de switch ?


Claro, puede usar el case let x as Type patrón de lanzamiento condicional case let x as Type :

let x: Any = "123" switch x { case let s as String: print(s) //use s case let i as Int: print(i) //use i case let b as Bool: print(b) //use b default: fatalError() }