如何访问某个索引处的 Range<Int>?
How does one access a Range<Int> at a certain index?
假设我有一个名为 myRange
的 Range<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"
但我个人觉得这不是很优雅。
有解决办法吗?
如果您只想使用第一个或最后一个索引,您可以使用 startIndex
和 endIndex
属性。
您可以使用以下函数获取特定索引处的值。
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
假设我有一个名为 myRange
的 Range<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"
但我个人觉得这不是很优雅。
有解决办法吗?
如果您只想使用第一个或最后一个索引,您可以使用 startIndex
和 endIndex
属性。
您可以使用以下函数获取特定索引处的值。
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