可选绑定与解包
if let/guard let 安全解包、?? 空合运算符、map/flatMap 可选链
可选绑定与解包
if let/guard let 不只解包一个值——可以同时解包多个、添加 where 条件、使用 ?? 默认值。
学完本章你将: 掌握 if let/guard let、??、可选 map/flatMap。
多重绑定
swift
let name: String? = "小明"
let age: Int? = 25
// 同时解包多个
if let name = name, let age = age {
print("\(name), \(age)岁")
}
// 带条件
if let name = name, let age = age, age >= 18 {
print("\(name) 已成年")
}
guard let 完整版
swift
func process(input: String?) -> String? {
guard let input = input, !input.isEmpty else {
print("输入无效")
return nil
}
guard let number = Int(input), number > 0 else {
print("不是正整数")
return nil
}
return "处理结果: \(number * 2)"
}
?? 链式默认值
swift
let a: String? = nil
let b: String? = nil
let c: String? = "C"
let result = a ?? b ?? c ?? "默认" // "C"
Optional 的 map / flatMap
swift
let name: String? = "小明"
// map —— 有值时转换
let upper = name.map { $0.uppercased() } // Optional("小明")
// flatMap —— 有值时转换并展平(避免嵌套 Optional)
let valid = name.flatMap { $0.isEmpty ? nil : $0 }