เรารู้ว่าเราสามารถใช้if let
คำสั่งเป็นชวเลขเพื่อตรวจสอบศูนย์ที่เป็นทางเลือกจากนั้นแกะออก
&&
แต่ผมต้องการที่จะรวมที่มีการแสดงออกอื่นโดยใช้ตรรกะและผู้ประกอบการ
ตัวอย่างเช่นที่นี่ฉันทำโซ่เสริมเพื่อแกะและเลือกดาวน์แคสต์ rootViewController เป็น tabBarController แต่แทนที่จะซ้อนคำสั่ง if ฉันต้องการรวมเข้าด้วยกัน
if let tabBarController = window!.rootViewController as? UITabBarController {
if tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
รวมการให้:
if let tabBarController = window!.rootViewController as? UITabBarController &&
tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
ข้างต้นทำให้เกิดข้อผิดพลาดในการคอมไพล์การใช้ตัวระบุที่ไม่ได้รับการแก้ไข 'tabBarController'
ลดความซับซ้อน:
if let tabBarController = window!.rootViewController as? UITabBarController && true {
println("do stuff")
}
นี้จะช่วยให้การรวบรวมข้อผิดพลาดคุ้มค่าที่ถูกผูกไว้ในเงื่อนไขผูกพันต้องเป็นชนิดที่เป็นตัวเลือก เมื่อพยายามใช้รูปแบบวากยสัมพันธ์ต่างๆแล้วแต่ละรูปแบบจะให้ข้อผิดพลาดของคอมไพเลอร์ที่แตกต่างกัน ฉันยังไม่พบชุดคำสั่งและวงเล็บที่ชนะ
ดังนั้นคำถามคือเป็นไปได้หรือไม่และถ้าเป็นเช่นนั้นไวยากรณ์ที่ถูกต้องคืออะไร?
โปรดทราบว่าผมต้องการที่จะทำเช่นนี้กับif
คำสั่งไม่switch
คำสั่งหรือ ternary ?
ผู้ประกอบการ