返回一个新序列:包含闭包返回“false”'前'的所有元素,原序列不变。
如果该元素应该包含在新序列中,则闭包返回“true”;否则返回“false”。一旦返回' false '它将不会被再次调用。
如果第一个元素作为参数时返回“false”, 则直接返回一个空序列。
/// 返回一个新序列:包含闭包返回“false”'前'的所有元素,原序列不变。
///
/// 参数是一个闭包,它接受序列的一个元素作为它的参数,如果该元素应该包含在新序列中,则闭包返回“true”;否则返回“false”。一旦返回' false '它将不会被再次调用。
///
/// - Complexity: O(*n*),其中*n*为集合的长度。
@inlinable public func prefix(while predicate: (Element) throws -> Bool) rethrows -> ArraySlice<Element>
var numbers = [1, 2, 3, 4, 5, 1, 6, 7, 1, 8, 9]
let prefix = numbers.prefix { (elem) -> Bool in
if elem < 3 { return true} // 元素应该包含在新序列中,则闭包返回“true”
return false // 一旦返回' false '它将不会被再次调用。
}
print(prefix) // [1, 2]
print(numbers) // [1, 2, 3, 4, 5, 1, 6, 7, 1, 8, 9]
网友评论