gpt4 book ai didi

ios - Swift 2.1 中的嵌套闭包

转载 作者:行者123 更新时间:2023-12-02 12:18:50 24 4
gpt4 key购买 nike

我想澄清一下 Swift 2.1 中的嵌套闭包

这里我声明一个嵌套闭包,

  typealias nestedDownload = (FirstItem: String!)-> (SencondItem: String!)->Void

然后我使用这个 nestedDownload 闭包作为以下函数的参数,并尝试在函数中完成完成参数值,如

func nestedDownloadCheck(compliletion:nestedDownload){

compliletion(FirstItem: "firstItem")
}

但这表示错误,“表达式解析为未使用的函数

此外,当我从 ViewDidLoad() 方法调用 nestedDownloadCheck() 时,通过 tring 填充编译正文

self.nestedDownloadCheck { (FirstString) -> (SecondString: String!) -> Void in
func OptionalFunction(var string:String)->Void{


}
return OptionalFunction("response")
}

这表示编译错误“无法将类型'Void'(又名'()')的返回表达式转换为返回类型'(SecondString: String!) -> Void'

我不知道我到底是如何以这种方式使用嵌套闭包的。

最佳答案

您必须返回实际的OptionalFunction,而不是使用“response”调用它并返回该值。 并且您必须在定义中使用String!:

nestedDownloadCheck { (FirstString) -> (SecondString: String!) -> Void in
func OptionalFunction(inputString:String!) -> Void {

}
return OptionalFunction
}

请注意,函数应以小写字母开头:可选函数

你的代码的作用是

  • 定义一个名为OptionalFunction的函数
  • 使用“response”作为参数调用该函数
  • 返回该调用返回的值 (Void)

The compiler therefore correctly tells you that Void is no convertible to the expected return value of (SecondString: String!) -> Void

您最终缺少的是调用实际返回的函数,如下所示:

func nestedDownloadCheck(compliletion:nestedDownload){
compliletion(FirstItem: "firstItem")(SencondItem: "secondItem")
}

关于ios - Swift 2.1 中的嵌套闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33591777/

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