在 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=])")}
在许多项目中,这种控制结构非常适合可读性:
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=])")}