Câu trả lời:
Bạn hoàn toàn có thể sử dụng is
trong một switch
khối. Xem "Nhập kiểu cho bất kỳ và AnyObject" trong Ngôn ngữ lập trình Swift (mặc dù tất nhiên nó không bị giới hạn Any
). Họ có một ví dụ rộng rãi:
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
" - và sau đó anh ta không bao giờ sử dụng nó. X)
case is Double
trong câu trả lời
Đưa ra ví dụ cho hoạt động "case is - case là Int, là String: ", trong đó nhiều trường hợp có thể được sử dụng kết hợp với nhau để thực hiện cùng một hoạt động cho các loại Đối tượng tương tự. Ở đây "," tách các loại trong trường hợp đang hoạt động như toán tử OR .
switch value{
case is Int, is String:
if value is Int{
print("Integer::\(value)")
}else{
print("String::\(value)")
}
default:
print("\(value)")
}
if
có lẽ không phải là ví dụ tốt nhất để chứng minh quan điểm của bạn.
value
là cái gì đó có thể là một trong những Int
, Float
, Double
, và điều trị Float
và Double
theo cùng một cách.
Trong trường hợp bạn không có giá trị, chỉ cần bất kỳ đối tượng nào:
nhanh 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
Tôi thích cú pháp này:
switch thing {
case _ as Int: print("thing is Int")
case _ as Double: print("thing is Double")
}
vì nó cung cấp cho bạn khả năng mở rộng chức năng nhanh chóng, như thế này:
switch thing {
case let myInt as Int: print("\(myInt) is Int")
case _ as Double: print("thing is Double")
}
thing
trong switch` trong bất kỳ điều nàocase
ở trên, nên sử dụng ở đây làthing
gì? Tôi đã không nhìn thấy nó. Cảm ơn.