在 Swift 中创建 "forCount" 控制结构

Create a "forCount" control structure in Swift

在许多项目中,这种控制结构非常适合可读性:

forCount( 40 )
 {
 // this block is run 40 times
 }

您可以在 objective-C 中进行 exactly that

鉴于 Swift 与 objective-c、

相比,对宏的处理方法 非常不同

有没有办法在 Swift 个项目中创建这样的 forCount(40) 控制结构?


Swift中的一些相似概念:

for _ in 1...40
 { // this block is run 40 times }

使用 ...

40.times
 { // this block is run 40 times }

Swift 中没有预处理器宏,但您可以定义一个全局 函数,将迭代计数和闭包作为参数:

func forCount(count : Int, @noescape block : () -> ()) {
    for _ in 0 ..< count {
        block()
    }
}

对于 "trailing closure syntax",它看起来 像一个内置的 控制语句:

forCount(40) {
    print("*")
}

@noescape属性允许编译做一些优化 并在不使用 self 的情况下引用实例变量,请参见 获取更多信息。

Swift 3 起, "noescape" 是函数的默认属性 参数:

func forCount(_ count: Int, block: () -> ()) {
    for _ in 0 ..< count {
        block()
    }
}

你可以

let resultArr = (0..<n).map{[=10=]+5}

(0..<n).forEach{print("Here\([=11=])")}