在 Swift 中,是否有一种内置方法可以将数组拆分为前缀和后缀?



SwiftArrays 上是否有一个内置方法将其分成两部分,保留所有元素的顺序?

类似于 Array.prefix 和Array.suffix的东西,合二为一?

我知道partitionsplit,但它们分别不保留顺序和大小。

例:

[1,2,3,5,6,2,3,5].cut(where: { $0 < 5 })
>>> ([1,2,3], [5,6,2,3,5])

恐怕没有这样的函数,这很遗憾,因为我现在已经需要好几次了。不过,自己动手很容易:

extension RangeReplaceableCollection {
func cut(where belongsInFirstHalf: (Element) -> Bool) -> (SubSequence, SubSequence) {
guard let splittingIndex = self.firstIndex(where: { !belongsInFirstHalf($0) }) else {
return (self[...], SubSequence())
}
return (
self[..<splittingIndex],
self[splittingIndex...]
)
}
}
print([1,2,3,5,6,2,3,5].cut(where: { $0 < 5 })) // => (ArraySlice([1, 2, 3]), ArraySlice([5, 6, 2, 3, 5]))

Swift 原生中没有内置的内容。我最好的建议是创建一个数组扩展并执行 findIndex 传入where参数,然后基于此拆分数组。

最新更新