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