Jawaban:
Anda benar-benar dapat digunakan isdalam satu switchblok. Lihat "Ketik Pengecoran untuk Apa Saja dan AnyObject" di Bahasa Pemrograman Swift (meskipun tentu saja tidak terbatas Any). Mereka memiliki contoh yang luas:
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" - dan kemudian dia tidak pernah menggunakannya. X)
case is Doubledalam jawabannya
Menampilkan contoh untuk "case is - case is Int, adalah operasi String: ", di mana banyak case dapat digunakan dipukul bersama untuk melakukan aktivitas yang sama untuk tipe Object yang Mirip. Di sini "," memisahkan jenis jika beroperasi seperti operator ATAU .
switch value{
case is Int, is String:
if value is Int{
print("Integer::\(value)")
}else{
print("String::\(value)")
}
default:
print("\(value)")
}
ifmungkin bukan contoh terbaik untuk membuktikan pendapat Anda.
valueadalah sesuatu yang dapat menjadi salah satu Int, Float, Double, dan mengobati Floatdan Doubledengan cara yang sama.
Jika Anda tidak memiliki nilai, sembarang objek:
cepat 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
Saya suka sintaks ini:
switch thing {
case _ as Int: print("thing is Int")
case _ as Double: print("thing is Double")
}
karena memberi Anda kemungkinan untuk memperluas fungsi dengan cepat, seperti ini:
switch thing {
case let myInt as Int: print("\(myInt) is Int")
case _ as Double: print("thing is Double")
}
thingdi dalam saklar di salah satu dari yangcasedi atas, apa yang akan digunakan di sini menggunakanthing? Saya gagal melihatnya. Terima kasih.