Ios 如何从给定的数字中获取范围索引值
如何获取范围中包含的值的索引Ios 如何从给定的数字中获取范围索引值,ios,swift,Ios,Swift,如何获取范围中包含的值的索引 var rangeValue = 30 ... 400 范围值[7]。//七个索引值36 let rangeValue = Array(30 ... 400) rangeValue[7] 严格地说,你可以在一个范围内下标,但它相当麻烦 let rangeValue = 30...400 let index = rangeValue.index(rangeValue.startIndex, offsetBy: 7) let value = rangeValue
var rangeValue = 30 ... 400
范围值[7]。//七个索引值36
let rangeValue = Array(30 ... 400)
rangeValue[7]
严格地说,你可以在一个范围内下标,但它相当麻烦
let rangeValue = 30...400
let index = rangeValue.index(rangeValue.startIndex, offsetBy: 7)
let value = rangeValue[index]
顺便说一下,第七个指数的值是37
或者在没有订阅的情况下语法更简单(灵感来自Asperi的回答)
我会通过对带有下标的
ClosedRange
的小扩展来实现(在操场上测试,所以任何人都可以复制粘贴)
你的题目和问题也是对立的。你想从值中得到索引还是从索引中得到值?@matt我需要从索引中得到值。@matt谢谢你的帮助。如果能更好地解释你为什么认为你需要这个,我不知道这个问题与kg/lb有什么关系。请问一下你想解决的真正问题。与其
Bound==Int
不如推广到所有绑定:AdditiveArithmetic
。另外,不要忘记检查<代码>上界> /COD>“溢出”。这可能意外地给出正确的答案,但你没有索引,只是添加了两个整数。@ Matt,我们考虑整数的闭合序列范围…请举一个例子,当这是错误的,如果你要这样争论,你应该争论,原来的问题是没有意义的,因为没有必要索引任何东西。
let rangeValue = 30...400
let value = rangeValue.lowerBound + 7
var rangeValue = 30 ... 400
extension ClosedRange where Bound == Int {
public subscript(index: Int) -> Int {
return self.lowerBound + index
}
}
rangeValue[7] // and this call is valid & gives 37