func Test(clo: @escaping (String)->Void)
{
clo($0)
}
它回傳一個錯誤,上面寫著:
匿名閉包引數不包含在閉包中
我希望能夠做到:
Test{ n in
var name = n
name = "Taha"
print(name)}
而不是硬編碼的字串
func Test(clo: @escaping (String)->Void)
{
clo("Taha")
}
uj5u.com熱心網友回復:
這不是 Swift 中閉包的作業方式。你寫的代碼甚至沒有意義。為什么要分配n給name然后更改的值name只是為了列印它?
帶有閉包的函式將呼叫具有給定值的閉包。您可以將閉包視為 lambda 函式。這是一個例子:
func test(_ closure: @escaping (String) -> Void) {
closure("My string")
}
test { str in
print(str) //prints " My string"
}
對于您要實作的目標,只需在函式中使用 String 引數:
func test(_ str: String) {
print(str)
}
test("My string") // prints "My string"
或者使用帶 Void 的閉包:
func test(_ closure: @escaping (Void) -> Void) {
closure()
}
test {
print("My string") // prints "My string"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/427953.html
上一篇:如何在Swift中生成給定大小的1位和0位的所有排列
下一篇:如何從元組陣列創建編號串列?
