Respuestas:
Absolutamente puede usar is
en un switch
bloque. Consulte "Tipo de conversión para Any y AnyObject" en el lenguaje de programación Swift (aunque no se limita a, Any
por supuesto). Tienen un extenso ejemplo:
for thing in things {
switch thing {
case 0 as Int:
println("zero as an Int")
case 0 as Double:
println("zero as a Double")
case let someInt as Int:
println("an integer value of \(someInt)")
case let someDouble as Double where someDouble > 0:
println("a positive double value of \(someDouble)")
// here it comes:
case is Double:
println("some other double value that I don't want to print")
case let someString as String:
println("a string value of \"\(someString)\"")
case let (x, y) as (Double, Double):
println("an (x, y) point at \(x), \(y)")
case let movie as Movie:
println("a movie called '\(movie.name)', dir. \(movie.director)")
default:
println("something else")
}
}
is
" - y luego él nunca lo usa. X)
case is Double
en la respuesta
Poniendo el ejemplo para la operación "case is - case is Int, is String: ", donde se pueden usar múltiples casos juntos para realizar la misma actividad para tipos de Objetos similares. Aquí "," que separa los tipos en caso de que esté operando como un operador OR .
switch value{
case is Int, is String:
if value is Int{
print("Integer::\(value)")
}else{
print("String::\(value)")
}
default:
print("\(value)")
}
if
probablemente no sea el mejor ejemplo para probar su punto.
value
es algo que puede ser uno de Int
, Float
, Double
, y el tratamiento Float
y Double
de la misma manera.
En caso de que no tenga un valor, cualquier objeto:
rápido 4
func test(_ val:Any) {
switch val {
case is NSString:
print("it is NSString")
case is String:
print("it is a String")
case is Int:
print("it is int")
default:
print(val)
}
}
let str: NSString = "some nsstring value"
let i:Int=1
test(str)
// it is NSString
test(i)
// it is int
Me gusta esta sintaxis:
switch thing {
case _ as Int: print("thing is Int")
case _ as Double: print("thing is Double")
}
ya que te da la posibilidad de extender la funcionalidad rápidamente, así:
switch thing {
case let myInt as Int: print("\(myInt) is Int")
case _ as Double: print("thing is Double")
}
thing
in switch` en ninguno de loscase
s anteriores, ¿cuál sería el uso aquíthing
? No pude verlo. Gracias.