iOS 13、Swift 5
我正试图了解Swift中的闭合语法,而且差不多了。我明白了前三个bon,也理解了它们;但最后一个不明白。我怎么在这里调用self.theMethod4?
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
}
你得到了闭包语法 ({ (parameters) -> ReturnValueType in statements }
)的权利,但由于第四个方法需要一个返回 String
,你需要返回一个字符串。
例如,这个。
self.the4Method("World") { (arg2do) -> String in
print("1 ",arg2do)
return "return value"
}
打印:
5
1 Pe
An return value
输出的解释。
首先是正文 the4Method
遭殃 5
得到打印。然后 the4Method
电话 endOfMethod
,这就是传入的闭包,参数为 "Pe"
. 所以... print("1 ", "Pe")
被运行,导致第二行被打印。之后,关闭返回 "return value"
而我们现在又回到了 the4Method
. 返回值被分配给 an
和 print("An ",an)
运行,导致最后一行被打印。