2017-04-22 8 views
1

私は迅速に研究しています。私は関数の中でクロージャを単にコールしたいと思います。私は以下を使用します:Swiftを使った単純なクロージャの例

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

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

    task() 
} 

"テスト"を印刷すると思われますが、何もしません。私は何を取りこぼしたか?

+2

「myFunc(times:5、task:task)を追加しないでください」 –

+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

関連する問題