Ios 带参数和不带参数的闭包语法
iOS 13,Swift 5 我试着在Swift中了解闭包语法,而且几乎就在那里。我得到了前三个苯教,并且理解它们;但最后一个问题是,我怎么称呼self.theMethod4呢?显示的语法错误Ios 带参数和不带参数的闭包语法,ios,swift,swiftui,closures,Ios,Swift,Swiftui,Closures,iOS 13,Swift 5 我试着在Swift中了解闭包语法,而且几乎就在那里。我得到了前三个苯教,并且理解它们;但最后一个问题是,我怎么称呼self.theMethod4呢?显示的语法错误 struct ContentView: View { var body: some View { Text("Hello, World!") .onAppear { self.theMethod { print("1") }
struct ContentView: View {
var body: some View {
Text("Hello, World!")
.onAppear {
self.theMethod {
print("1")
}
self.the2Method("Ya ") {
print("1")
}
self.the3Method("Hello") {arg2do in
print("1 ",arg2do)
}
self.the4Method("World") { (arg2do) -> String in
print("1 ",arg2do)
}
}
}
func theMethod(_ endOfMethod: @escaping () -> Void) {
print("2")
endOfMethod()
}
func the2Method(_ arg1:String, endOfMethod: @escaping () -> Void) {
print("3")
endOfMethod()
}
func the3Method(_ arg1:String, endOfMethod: @escaping (_ arg2:String) -> Void) {
print("4")
endOfMethod("Yo")
}
func the4Method(_ arg1:String, endOfMethod: @escaping (_ arg2: String) -> String) {
print("5")
let an = endOfMethod("Pe")
print("An ",an)
}
}
方法4中的闭包被定义为返回字符串,因此当您调用它时,您必须这样做:
self.the4Method("World") { arg2do -> String in
return "1 " + arg2do
}
方法4中的闭包被定义为返回字符串,因此当您调用它时,您必须这样做:
self.the4Method("World") { arg2do -> String in
return "1 " + arg2do
}
您正确地使用了闭包语法(
{(parameters)->ReturnValueType in statements}
),但是由于第四个方法需要返回字符串的闭包,因此您需要返回字符串
例如,这:
self.the4Method("World") { (arg2do) -> String in
print("1 ",arg2do)
return "return value"
}
印刷品:
5
1 Pe
An return value
对产出的解释:
首先运行
4method
的主体,因此打印5
。然后4method
调用endOfMethod
,这是传入的闭包,参数为“Pe”
。因此,print(“1”,“Pe”)
运行,导致打印第二行。之后,闭包返回“returnvalue”
,现在我们回到的4method
。返回值被分配给an
,并且运行print(“an”,an)
,导致最后一行被打印。您正确地使用了闭包语法({(参数)->ReturnValueType in statements}
),但是由于第四个方法需要返回字符串的闭包,因此需要返回字符串
例如,这:
self.the4Method("World") { (arg2do) -> String in
print("1 ",arg2do)
return "return value"
}
印刷品:
5
1 Pe
An return value
对产出的解释:
首先运行4method
的主体,因此打印5
。然后4method
调用endOfMethod
,这是传入的闭包,参数为“Pe”
。因此,print(“1”,“Pe”)
运行,导致打印第二行。之后,闭包返回“returnvalue”
,现在我们回到的4method
。返回值被分配给an
,并且运行print(“an”,an)
,从而打印最后一行