2017-04-22 51 views
1

我正在学习Swift,我想简单地调用函数内部的闭包。我使用以下:Swift的简单封闭示例

var task :() -> Void 
task = { 
    print("Test") 
} 

func myFunc(times: Int, task:() -> Void){ 

    task() 
} 

它假设打印“测试”,但它什么都不做。我错过了什么?

+2

你从不*调用函数 - 添加'myFunc(times:5,task:task)' –

+3

你是怎么调用'myFunc'的?请记住,在'myFunc'中调用'task'是调用*参数*'任务',而不是全局。 – Hamish

+0

@MartinR是的,那是我的错,对不起。 –

回答

2

这样它会工作:

var task :() -> Void 

task = { 

    print("Test") 
} 


func myFunc(times: Int, task:() -> Void){ 

    task() 
} 

//call your function this way. 
myFunc(times: 2, task: task) //this will print "Test" in console. 
1

我相信斯威夫特瓶盖完成这种方式。希望能帮助到你。

func printTest(){ 
    print("Test") 
} 

//task is a variable of type function 

var task:() -> Void 
task = { 
} 

task = printTest 
printTest() 
+0

您对“任务”进行了不必要的重新分配。您分配'{}',然后立即重新分配'printTest' – Alexander