Ios 使用闭包作为参数而不使用尾随闭包

Ios 使用闭包作为参数而不使用尾随闭包,ios,swift,Ios,Swift,使用尾随闭包语法时,似乎很容易理解 但是,我希望在不使用尾部闭包语法的情况下执行此操作 func doSomethingTwo(closure: (String) -> Void) { closure("AAA") } doSomethingTwo(closure: print("TEST") ) 给予 无法将类型“()”的值转换为预期的参数类型“(字符串)->Void” 我知道 doSomethingTwo{ (test: String) in print ("\(t

使用尾随闭包语法时,似乎很容易理解

但是,我希望在不使用尾部闭包语法的情况下执行此操作

func doSomethingTwo(closure: (String) -> Void) {
    closure("AAA")
}

doSomethingTwo(closure: print("TEST") )
给予 无法将类型“()”的值转换为预期的参数类型“(字符串)->Void”

我知道

doSomethingTwo{ (test: String) in
    print ("\(test)")
}
可以工作,但希望不使用尾随闭包语法


这不是一个家庭作业问题,我正在看教程,并且做了一些研究,但没有给我这个问题的答案

这就是调用函数的方式

doSomethingTwo()
如果我们遵循这个模式,首先放置
()
,然后附带它的参数,您将得到如下结果

doSomethingTwo(closure: { (str) in
     print(str)
})
顺便说一下,
Xcode
将帮助您完成。但是如果您不需要它的帮助,当您有此功能时,不要轻触,请自己键入其余内容。
您没有正确调用函数。你应该这样称呼它:

doSomethingTwo(closure: { (text) in
print(text)
})

您需要定义自己的打印方法以将其作为参数传递:

func doSomethingTwo(closure: (String) -> ()) {
    // when you call the closure you need to pass the string to be printed
    closure("TEST")
}
定义打印将传递给闭包的字符串的方法:

let closure: (String) -> () = { print($0) }
然后,您可以随意称呼它:

doSomethingTwo(closure: closure)