数组中的Swift负索引

数组中的Swift负索引,第1张

概述是否有可能覆盖 Swift的默认数组下标,以便它处理像 Python这样的负面索引? 例如,a [-1]应该返回a的最后一个元素,并且[-2]应该返回它之前的元素. 这应该可以通过扩展Array类型来实现,唉,下面的代码将无法工作,因为它会无限循环: extension Array { subscript (index:Int) -> [Element] { return ( 是否有可能覆盖 Swift的默认数组下标,以便它处理像 Python这样的负面索引?

例如,a [-1]应该返回a的最后一个元素,并且[-2]应该返回它之前的元素.

这应该可以通过扩展Array类型来实现,唉,下面的代码将无法工作,因为它会无限循环:

extension Array {   subscript (index:Int) -> [Element] {        return (index < 0) ? self[self.count+index] : self[index]   }}

覆盖那些根本性的东西的想法有多糟糕?

实际上,这是一个相对良好的实践,Swifty方法:标记参数.
extension CollectionType where Index : BIDirectionalindexType {  subscript(back i: Index.distance) -> Generator.Element {    return self[endindex.advancedBy(-i)]  }}let ar = [1,2,3,4]ar[back: 1] // 4ar[back: 2] // 3

你可以很容易地改变语义.例如,这个实现要求索引大于0.更改它以使0返回最后一个元素就像:self [endindex.predecessor().advancedBy(-i)],或者,如果你想假设index为负向:self [endindex.advancedBy(-i)].

标记论证的优点是它很清楚,没有人会偶然使用它.

总结

以上是内存溢出为你收集整理的数组中的Swift负索引全部内容,希望文章能够帮你解决数组中的Swift负索引所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089947.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存