swift repeat func:函数声明中的预期标识符

时间:2016-05-16 02:13:18

标签: swift

我正在使用关闭扩展作为参数的快速学习书。

在书中,它告诉我

extensionInt {
    func repeat(work: () -> ()) {
        for _ in 0..< self {
            work()
        }
    }
}

但对于“func repeat ..”的行,xcode告诉我“函数声明中的预期标识符”

并且对于“for _ in ...”这一行,xcode告诉我“Braced block of statement是一个未使用的闭包”和“Expected'{'来启动for-each循环体。”

有没有人可以告诉我为什么会发生这种情况,我该怎么办?

2 个答案:

答案 0 :(得分:1)

发布的代码存在许多问题:

  1. extensionInt应该是extension Int,虽然我怀疑这是你发布的错误
  2. 正如@Zhao Yi所指出的那样,repeat是一个Swift关键字,你需要重命名你的函数(例如repeatWork)
  3. Swift半开放式操作员要求两侧空置空间,或两侧无空间。这两个都是有效的:

    0 ..< self
    0..<self
    
  4. 最后,您可以像这样调用此函数:

    2.repeatWork({
        print("Hello")
    })
    

    或者这个:

    2.repeatWork {
        print("Hola")
    }
    

答案 1 :(得分:-1)

请在下面的代码。主要的是,repeat是一个不能用作函数名的关键字。

extension Int {
func repeat1(work: () -> ()) {
    for _ in 0..<self {
        work()
    }
}

}