在许多项目中,这种控制结构非常适合可读性:
forCount( 40 )
{
// this block is run 40 times
}
你可以做正是如此 https://stackoverflow.com/a/4844280/294884在 Objective-C 中。
鉴于 Swift 有一个非常不同的宏方法比objective-c,
有没有办法创建这样一个forCount(40)
Swift 项目中的控制结构?
Swift 中的一些类似概念:
for _ in 1...40
{ // this block is run 40 times }
使用对 Int 的巧妙扩展 https://stackoverflow.com/a/30554255/294884 ...
40.times
{ // this block is run 40 times }
Swift 中没有预处理器宏,但您可以定义一个全局的function将迭代计数和闭包作为参数:
func forCount(count : Int, @noescape block : () -> ()) {
for _ in 0 ..< count {
block()
}
}
使用“尾随闭包语法”,它looks就像一个内置的
控制语句:
forCount(40) {
print("*")
}
The @noescape
属性允许编译进行一些优化
并引用实例变量而不使用self
, see
Swift 1.2 中的 @noescape 属性 https://stackoverflow.com/questions/28427436/noescape-attribute-in-swift-1-2了解更多信息。
As of Swift 3,“noescape”是函数的默认属性
参数:
func forCount(_ count: Int, block: () -> ()) {
for _ in 0 ..< count {
block()
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)