2017-04-22 3 views
1

나는 신속히 공부하고 있으며, 단순히 함수 내부에서 클로저를 호출하려고합니다. 나는 다음을 사용한다 :Swift를 사용한 간단한 클로저 예제

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

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

    task() 
} 

"Test"를 인쇄한다고 가정하고는 아무 것도하지 않는다. 내가 놓친 게 무엇입니까? 그것이 작동

+2

당신은 결코 * 전화 * 기능 - 추가'MYFUNC (시간 : 5, 작업 : 작업)' –

+3

가 어떻게'myFunc'를 호출? 'myFunc'에있는'task'에 대한 호출은 전역이 아닌 * 인수 *'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

'task'에 불필요한 재 할당이 있습니다. '{}'를 지정하면 즉시'printTest'를 재 할당합니다. – Alexander

관련 문제