where子句是Swift中的一个非常实用的语法,可以更精确地定义类型约束、条件判断等逻辑。
定义类型约束
where子句可以在泛型定义中指定更多类型约束条件:
func findIndex<T>(of value: T, in array: [T]) -> Int?
where T: Equatable {
for (index, item) in array.enumerated() {
if item == value {
return index
}
}
return nil
}
这里的where子句限定了T必须遵循Equatable协议。
条件判断
在条件判断逻辑中可以使用where子句增强表达式:
let numbers = [1, 2, 3, 4]
let evenNumbers = numbers.filter { number in
where number % 2 == 0
return true
}
这里只过滤出可以被2整除的偶数。
排序
在数组排序时where可以提供排序条件:
let products = [["name": "egg", "price": 5], ["name": "milk", "price": 3]]
let sorted = products.sorted { $0["price"] > $1["price"] }
where $0["price"] != $1["price"]
总结
where子句为Swift提供了更丰富的语法,可以编写出更清晰、精准的逻辑判断,发挥语言的最大价值。熟练掌握where的用法,可以让我们的Swift代码达到更高的水准。