【发布时间】:2015-09-09 21:42:31
【问题描述】:
是否可以覆盖 Swift 的默认数组下标,以便它像 Python 一样处理负索引?
例如,a[-1] 应该返回 a 的最后一个元素,a[-2] 应该返回它之前的元素。
这应该可以通过扩展Array类型来实现,唉,下面的代码将无法工作,因为它会无限循环:
extension Array {
subscript (index:Int) -> [Element] {
return (index < 0) ? self[self.count+index] : self[index]
}
}
重写一些基本的东西的想法有多糟糕?
【问题讨论】:
-
就我个人而言,我认为这是一个非常糟糕的主意。这很容易让毫无戒心的开发人员重用/维护您的代码。
-
最简单的公式其实是:
unsignedIndex = signedIndex % arrayCount。即return self[signedIndex % count]。但是这样索引永远不会溢出,所以要小心。
标签: arrays swift foundation