Swift 2.1 中的嵌套闭包
Nested Closures in Swift 2.1
我想清除 Swift 2.1
中的嵌套闭包
这里我声明了一个嵌套闭包,
typealias nestedDownload = (FirstItem: String!)-> (SencondItem: String!)->Void
然后我使用这个nestedDownload
闭包作为后面函数的参数,并尝试在函数中补全compliletion参数值,如
func nestedDownloadCheck(compliletion:nestedDownload){
compliletion(FirstItem: "firstItem")
}
但这表示错误,“表达式解析为未使用的函数”
此外,当我通过 tring 从 ViewDidLoad()
方法调用 nestedDownloadCheck()
来填充编译的主体时
self.nestedDownloadCheck { (FirstString) -> (SecondString: String!) -> Void in
func OptionalFunction(var string:String)->Void{
}
return OptionalFunction("response")
}
这表示编译错误“无法将 'Void'(aka'()') 类型的 return 表达式转换为 return 类型 '(SecondString: String !) -> 无效' "
我不知道我究竟是如何以这种方式使用嵌套闭包的。
您必须 return 实际 OptionalFunction
,而不是使用 "response"
和 return 该值来调用它。 和你必须在定义中使用String!
:
nestedDownloadCheck { (FirstString) -> (SecondString: String!) -> Void in
func OptionalFunction(inputString:String!) -> Void {
}
return OptionalFunction
}
注意函数应该以小写字母开头:optionalFunction
.
您的代码所做的是
- 定义一个名为
OptionalFunction
的函数
- 使用
"response"
作为参数调用该函数
- return 该调用 return 的值 (
Void
)
The compiler therefore correctly tells you that Void
is no convertible to the expected return value of (SecondString: String!) -> Void
您最终缺少的是像这样调用实际的 returned 函数:
func nestedDownloadCheck(compliletion:nestedDownload){
compliletion(FirstItem: "firstItem")(SencondItem: "secondItem")
}
我想清除 Swift 2.1
中的嵌套闭包这里我声明了一个嵌套闭包,
typealias nestedDownload = (FirstItem: String!)-> (SencondItem: String!)->Void
然后我使用这个nestedDownload
闭包作为后面函数的参数,并尝试在函数中补全compliletion参数值,如
func nestedDownloadCheck(compliletion:nestedDownload){
compliletion(FirstItem: "firstItem")
}
但这表示错误,“表达式解析为未使用的函数”
此外,当我通过 tring 从 ViewDidLoad()
方法调用 nestedDownloadCheck()
来填充编译的主体时
self.nestedDownloadCheck { (FirstString) -> (SecondString: String!) -> Void in
func OptionalFunction(var string:String)->Void{
}
return OptionalFunction("response")
}
这表示编译错误“无法将 'Void'(aka'()') 类型的 return 表达式转换为 return 类型 '(SecondString: String !) -> 无效' "
我不知道我究竟是如何以这种方式使用嵌套闭包的。
您必须 return 实际 OptionalFunction
,而不是使用 "response"
和 return 该值来调用它。 和你必须在定义中使用String!
:
nestedDownloadCheck { (FirstString) -> (SecondString: String!) -> Void in
func OptionalFunction(inputString:String!) -> Void {
}
return OptionalFunction
}
注意函数应该以小写字母开头:optionalFunction
.
您的代码所做的是
- 定义一个名为
OptionalFunction
的函数
- 使用
"response"
作为参数调用该函数 - return 该调用 return 的值 (
Void
)
The compiler therefore correctly tells you that
Void
is no convertible to the expected return value of(SecondString: String!) -> Void
您最终缺少的是像这样调用实际的 returned 函数:
func nestedDownloadCheck(compliletion:nestedDownload){
compliletion(FirstItem: "firstItem")(SencondItem: "secondItem")
}