gpt4 book ai didi

swift - 这段遗留 Swift 代码中 "SubSlice"的新等价物是什么?

转载 作者:可可西里 更新时间:2023-11-01 02:17:18 25 4
gpt4 key购买 nike

我正在查看 this legacy Swift code实现 Peter Norvig 的拼写检查器,并遇到了这段代码:

extension Array {
subscript(r: RangeStart<Int>) -> SubSlice { return self[r.start..<self.endIndex] }
subscript(r: RangeEnd<Int>) -> SubSlice { return self[self.startIndex..<r.end] }
}

我该如何重写它,以便 SubSlice 更新到现在应该的样子?

最佳答案

您正在寻找 ArraySlice<Element> :

struct RangeStart<I: ForwardIndexType> { let start: I }
struct RangeEnd<I: ForwardIndexType> { let end: I }

extension Array {
subscript(r: RangeStart<Int>) -> ArraySlice<Element> { return self[r.start..<self.endIndex] }
subscript(r: RangeEnd<Int>) -> ArraySlice<Element> { return self[self.startIndex..<r.end] }
}

/* example usage */
let foo = Array(0...10)
foo[RangeStart<Int>(start: 5)] // [5, 6, 7, 8, 9, 10]
foo[RangeEnd<Int>(end: 6)] // [0, 1, 2, 3, 4, 5]

let bar = ["1", "2", "3", "4", "5"]
bar[RangeStart<Int>(start: 2)] // ["3", "4", "5"]
bar[RangeEnd<Int>(end: 3)] // ["1", "2", "3"]

关于swift - 这段遗留 Swift 代码中 "SubSlice"的新等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36167615/

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