Risposte:
Puoi assolutamente usarlo is
in un switch
blocco. Vedi "Digitare Casting per Any e AnyObject" nel linguaggio di programmazione Swift (anche se non si limita Any
ovviamente). Hanno un ampio esempio:
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
" - e poi non lo usa mai. X)
case is Double
nella risposta
Mettendo l'esempio per "case is - case is Int, is String: " operazione, in cui è possibile utilizzare più casi raggruppati insieme per eseguire la stessa attività per tipi di oggetti simili. Qui "," la separazione dei tipi nel caso in cui funzioni come un operatore OR .
switch value{
case is Int, is String:
if value is Int{
print("Integer::\(value)")
}else{
print("String::\(value)")
}
default:
print("\(value)")
}
if
è probabilmente il miglior esempio per dimostrare il tuo punto.
value
è qualcosa che può essere uno dei Int
, Float
, Double
, e nel trattamento Float
e Double
nello stesso modo.
Nel caso in cui non si abbia un valore, qualsiasi oggetto:
veloce 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
Mi piace questa sintassi:
switch thing {
case _ as Int: print("thing is Int")
case _ as Double: print("thing is Double")
}
poiché ti dà la possibilità di estendere rapidamente la funzionalità, in questo modo:
switch thing {
case let myInt as Int: print("\(myInt) is Int")
case _ as Double: print("thing is Double")
}
thing
in switch` in any of thecase
s above, what would be the use here usingthing
? I failed to see it. Thanks.