Chúng tôi biết rằng chúng tôi có thể sử dụng một if let
câu lệnh như một tốc ký để kiểm tra một nil tùy chọn sau đó mở ra.
Tuy nhiên, tôi muốn kết hợp điều đó với một biểu thức khác bằng cách sử dụng toán tử logic AND &&
.
Vì vậy, ví dụ, ở đây tôi thực hiện chuỗi tùy chọn để mở và tùy chọn downcast rootViewController của tôi xuống tabBarController. Nhưng thay vì có các câu lệnh if lồng nhau, tôi muốn kết hợp chúng.
if let tabBarController = window!.rootViewController as? UITabBarController {
if tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Cho kết hợp:
if let tabBarController = window!.rootViewController as? UITabBarController &&
tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Ở trên đưa ra lỗi biên dịch Sử dụng mã định danh chưa được giải quyết 'tabBarController'
Đơn giản hóa:
if let tabBarController = window!.rootViewController as? UITabBarController && true {
println("do stuff")
}
Điều này gây ra lỗi biên dịch Giá trị ràng buộc trong ràng buộc có điều kiện phải thuộc loại Tùy chọn . Đã thử các biến thể cú pháp khác nhau, mỗi biến thể đều cho một lỗi trình biên dịch khác nhau. Tôi vẫn chưa tìm thấy sự kết hợp chiến thắng của thứ tự và dấu ngoặc đơn.
Vì vậy, câu hỏi là, nó có thể và nếu vậy thì cú pháp chính xác là gì?
Lưu ý rằng tôi muốn thực hiện điều này với một if
câu lệnh không phải một switch
câu lệnh hoặc một toán ?
tử bậc ba .
var foo : Int? = 10; if let bar = foo { if bar == 10 { println("Great success!") }}
if let bar = foo && bar == 10
là Use of unresolved identifier "bar"
( bar
tất nhiên là trên thứ hai ).
bridgeToObjectiveC
đã ra mắt trong bản beta 5 (và có thể không bao giờ dành cho mục đích sử dụng chung). 2. Dù sao cũng có một first
phương thức trên kiểu tích hợp của Swift Array
.