如何访问某个索引处的 Range<Int>?

How does one access a Range<Int> at a certain index?

假设我有一个名为 myRangeRange<Int>:

let myRange = 1...10

我如何访问 0th 或在此 Range<Int> 中说出 5th 值?

我知道您可以从 Range<Int> 创建一个 Array<Int> 并使用索引访问它:

let rangeArray = Array(myRange)
print("myRange at index 1 has a value of \(rangeArray[1])")
//prints "myRange at index 1 has a value of 2"

但我个人觉得这不是很优雅。
有解决办法吗?

如果您只想使用第一个或最后一个索引,您可以使用 startIndexendIndex 属性。

您可以使用以下函数获取特定索引处的值。

func getValueOfRange(range : Range<Int>,atIndex index : Int) -> Int?
{
    if (index > (range.endIndex - range.startIndex)) || index < 0 {
        return nil
    }
    return range.startIndex + index - 1
}

let myRange2 = 6...10
getValueOfRange(myRange2, atIndex: 5) // Some 5

getValueOfRange(myRange2, atIndex: 11) // nil