gpt4 book ai didi

ios - Swift 1.2 - 由类函数的闭包参数引起的错误

转载 作者:行者123 更新时间:2023-11-28 07:03:29 26 4
gpt4 key购买 nike

自从我升级到 Swift 1.2 后,我遇到了一个无法解决的奇怪问题。这是导致所有问题的代码:

internal class Test<T,U> {
internal class func closureFunc(#arg: T, worker: (first: T, second: String) -> U, closure: ((u: U) -> Void)?) -> Void {
println("Something")
}
}
Test.closureFunc(arg: "", worker: { (first, second) -> Void in
//code
}) { (u) -> Void in
//code
}

错误本身说:

"Function signature (Void) -> Void is not compatible with expected type (u: Void) -> Void".

我阅读了所有关于 Swift 1.2 的内容,但我似乎仍然找不到对此的合理解释。我将非常感谢任何提示和建议。

PS:刚看到this topic ,这与我的相似,但在闭包中删除参数名称对我来说不太管用。

最佳答案

这似乎是 Swift 1.2(甚至 Swift 2(Xcode 7 beta 3))中的一个错误,它具有带有外部名称的单参数闭包。

作为解决方法,您可以删除外部参数名称“u”:

internal class func closureFunc(#arg: T, worker: (first: T, second: String) -> U, closure: (U -> Void)?) -> Void

在 Swift 2(仅)中有另一种解决方法,您可以为传递的闭包指定一个外部名称(因为这将符合新的和更严格的命名约定):

Test.closureFunc(arg: "", worker: { (first, second) -> Void in
//code
}) { (anyExternalNameWorks u: Void) -> Void in
//code
}

关于ios - Swift 1.2 - 由类函数的闭包参数引起的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31430698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com