Jawaban:
Anda benar-benar dapat digunakan is
dalam satu switch
blok. 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 Double
dalam 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)")
}
if
mungkin bukan contoh terbaik untuk membuktikan pendapat Anda.
value
adalah sesuatu yang dapat menjadi salah satu Int
, Float
, Double
, dan mengobati Float
dan Double
dengan 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")
}
thing
di dalam saklar di salah satu dari yangcase
di atas, apa yang akan digunakan di sini menggunakanthing
? Saya gagal melihatnya. Terima kasih.