扩展可以给现有的类型添加新的下标。下面的例子中,对 Swift 的 Int
类型添加了一个整数类型的下标。下标 [n]
从数字右侧开始,返回小数点后的第 n
位:
123456789[0]
返回9
123456789[1]
返回8
……以此类推:
extension Int {
subscript(digitIndex: Int) -> Int {
var decimalBase = 1
for _ in 0..<digitIndex {
decimalBase *= 10
}
return (self / decimalBase) % 10
}
}
746381295[0]
// 返回 5
746381295[1]
// 返回 9
746381295[2]
// 返回 2
746381295[8]
// 返回 7
如果操作的 Int
值没有足够的位数满足所请求的下标,那么下标的现实将返回 0
,将好像在数字的左边补上了 0:
746381295[9]
// 返回 0,就好像你进行了这个请求:
0746381295[9]