Ios 带参数和不带参数的闭包语法

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") }

iOS 13,Swift 5

我试着在Swift中了解闭包语法,而且几乎就在那里。我得到了前三个苯教,并且理解它们;但最后一个问题是,我怎么称呼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
}

方法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)
,从而打印最后一行