热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在快速c型循环被弃用后循环中的递减索引-DecrementindexinaloopafterSwiftC-styleloopsdeprecated

HowwouldyouexpressadecrementingindexedloopinSwift3.0,wherethesyntaxbelowisnotvalid

How would you express a decrementing indexed loop in Swift 3.0, where the syntax below is not valid any more?

在Swift 3.0中,如果下面的语法不再有效,您将如何表示一个递减的索引循环?

for var index = 10 ; index > 0; index-=1{
   print(index)
}

// 10 9 8 7 6 5 4 3 2 1

5 个解决方案

#1


29  

Here is an easier (and more Swifty) approach.

这里有一个更简单(也更敏捷)的方法。

for i in (0 ..<5).reversed() {
    print(i) // 4,3,2,1,0
}

let array = ["a", "b", "c", "d", "e"]
for element in array.reversed() {
    print(element) // e,d,c,b,a
}

array.reversed().forEach { print($0) } // e,d,c,b,a

print(Array(array.reversed())) // e,d,c,b,a

#2


46  

C-style loops with a fixed increment or decrement can be replaced by stride():

带有固定增量或递减的c型循环可以用stride()代替:

for index in 10.stride(to: 0, by: -1) {
    print(index)
}

// 10 9 8 7 6 5 4 3 2 1

Use stride(to: ...) or stride(through: ...) depending on whether the last element should be included or not.

使用stride(to:…)或stride(through:…),这取决于最后一个元素是否应该包含。

This is for Swift 2. The syntax changed (again) for Swift 3, see this answer.

这是给斯威夫特2的。Swift 3的语法(再次)发生了变化,请参见此答案。

#3


17  

From swift 3.0, The stride(to:by:) method on Strideable has been replaced with a free function, stride(from:to:by:)

从swift 3.0开始,Strideable上的stride(to:by:)方法已经被一个free function所取代,stride(From:to:by:)

 for index in stride(from: 10, to: 0, by: -1){
      print(index)
 }

#4


9  

You can use stride method:

你可以使用步法:

10.stride(through: 0, by: -1).forEach { print($0) }

or classic while loop.

或经典的while循环。

#5


1  

If you still want to use this C-style loop, here is what you need:

如果你还想使用这个c型循环,以下是你需要的:

let x = 10

infix operator ..> { associativity left }
func ..>(left: Int, right: Int) -> StrideTo {
    return stride(from: left, to: right, by: -1)
}

for i in x..>0 {
    print(i)
}

推荐阅读
author-avatar
9baibai_555
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有