gpt4 book ai didi

ios - 如何在 Swift 中创建安全的 Array 子集?

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

我正在尝试创建一种安全的拆分数组的方法。

我知道你可以拿一个数组的子集做这样的事情:

let arr = [1,2,3,4,5]
print(arr[0..<3])

它将打印[1,2,3]

如果您在相同的 arr

上尝试以下操作
print(arr[3..<9])

程序会崩溃

我想做一个数组扩展,它不会崩溃,而是产生尽可能多的元素,以便打印[4,5]

subscript(safe range: Range) -> Element? {

}

最佳答案

您可以执行以下操作:

extension Array {
subscript(safe range: Range<Index>) -> ArraySlice<Element>? {
if range.endIndex > endIndex {
if range.startIndex >= endIndex {return nil}
else {return self[range.startIndex..<endIndex]}
}
else {
return self[range]
}
}
}

let a = [1,2,3]
a[safe: 1...3] // [2,3]

编辑:考虑到起始索引可能不是数组开头的注释,我进行了修改,即使 endIndex 超出范围,返回的切片也始终从 startIndex 开始数组(除非开始索引在数组的结束索引之后,在这种情况下返回 nil)。

关于ios - 如何在 Swift 中创建安全的 Array 子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36249032/

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