gpt4 book ai didi

swift - Swift3 中的范围

转载 作者:行者123 更新时间:2023-11-30 12:54:59 24 4
gpt4 key购买 nike

我正在努力应对 Swift3 的一项更改。早些时候他们治疗了.....<Range ,但现在他们有大量新的“子范围”。我想要一个接受两个范围变体的函数。

struct Test {
var data = [1,2,3,4,5]
subscript(r:Range<Int>) -> [Int] {
return Array(data[r])
}
}
let t = Test()
print(t[0...1]) // fails because now this is a ClosedRange
print(t[0..<2])

我想要一个

  subscript(r:TakesAnyRange<Int>) -> [Int] {

最佳答案

您可以通过使用 CountableRangeCountableClosedRange 来避免重复,因为其中一个可以转换为另一个:

struct Test {
var data = [1,2,3,4,5]

subscript(r: CountableRange<Int>) -> [Int] {
return Array(data[r])
}

subscript(r: CountableClosedRange<Int>) -> [Int] {
return self[CountableRange(r)]
}
}

这适用于 Int 范围,这是您在问题中指定的范围。来自苹果文档:

You can create a countable range over any type that conforms to the Strideable protocol and uses an integer as its associated Stride type. By default, Swift’s integer and pointer types are usable as the bounds of a countable range.

关于swift - Swift3 中的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40522814/

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