在 Swift 中,是否有一种巧妙的方法可以使用 Array 上的高阶方法来返回前 5 个对象?
obj-c 的做法是保存一个索引,然后通过数组循环递增索引,直到索引为 5 并返回新数组。有没有办法做到这一点filter
, map
or reduce
?
到目前为止,获取 Swift 数组前 N 个元素的最巧妙方法是使用prefix(_ maxLength: Int)
:
let array = [1, 2, 3, 4, 5, 6, 7]
let slice5 = array.prefix(5) // ArraySlice
let array5 = Array(slice5) // [1, 2, 3, 4, 5]
一行是:
let first5 = Array(array.prefix(5))
这样做的好处是边界安全。如果您传递给的计数prefix
大于数组计数,那么它只返回整个数组。
NOTE:正如评论中指出的那样,Array.prefix
实际上返回一个ArraySlice
,不是一个Array
.
如果您需要将结果分配给Array
输入或将其传递给需要的方法Array
参数,您需要将结果强制转换为Array
type: let first5 = Array(array.prefix(5))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)