gpt4 book ai didi

ios - Swift 中的数组操作

转载 作者:搜寻专家 更新时间:2023-11-01 05:49:45 26 4
gpt4 key购买 nike

我有一个数组说

let array = [4,5,7,2,6,8,2,5,7,9,0,1,365,65,33,23,65]

现在当我写下面的代码时

let test = array.drop { (x) -> Bool in
x < 10
}

输出是 array is : [365, 65, 33, 23, 65] 这是真的,因为我们丢弃了小于 10 的元素。

但是如果要删除所有大于 10 的元素会怎样,所以我写了下面的代码

let test = array.drop { (x) -> Bool in
x > 10
}

现在输出数组是:[4, 5, 7, 2, 6, 8, 2, 5, 7, 9, 0, 1, 365, 65, 33, 23, 65]

谁能解释为什么会出现这种行为?请帮助我在上面的代码中缺少什么?我正在使用 Swift 4.0

最佳答案

您想使用filter,而不是drop

来自 drop(where:) 的文档:

Returns a subsequence by skipping elements while predicate returns true and returning the remaining elements.

因此,一旦 drop block 中的条件为假,就会返回数组的其余部分。

您的第一个测试用例似乎有效,因为所有 < 10 的值都恰好在任何 > 10 的值之前。

下面是使用 filter 的正确解决方案:

let array = [4,5,7,2,6,8,2,5,7,9,0,1,365,65,33,23,65]
let test = array.filter { $0 < 10 }
print(test)

[4, 5, 7, 2, 6, 8, 2, 5, 7, 9, 0, 1]

let array = [4,5,7,2,6,8,2,5,7,9,0,1,365,65,33,23,65]
let test = array.filter { $0 > 10 }
print(test)

[365, 65, 33, 23, 65]

关于ios - Swift 中的数组操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46670815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com