2014-11-07 63 views
0

我想將一個函數傳遞給一個類,然後從類中調用它。這裏是我的代碼:將函數傳遞給Swift中的類

class TestClass { 
    var action:() 

    init(action:()) 
    { 
     self.action = action 
    } 
} 

func doSomething() 
{ 
    println("need to do something") 
} 


let testingFunction = TestClass(action:doSomething()) 
testingFunction.action 

當我調用testingFunction.action時,什麼都不會發生。任何建議。

+0

您沒有傳遞函數,而是傳遞調用函數的結果。 – CodaFi 2014-11-07 00:06:03

回答

1

函數類型包含參數類型和返回類型。在這種情況下,doSomething的函數類型爲() -> VoidVoid是一個空元組,因此這相當於() ->()。所以,你的TestClass應該是這樣的:

class TestClass { 
    var action:() -> Void 
    init(action:() -> Void) { 
     self.action = action 
    } 
} 

要通過一個函數作爲參數,只需使用該函數的名稱,就像任何其他變量的名稱。所以,你會初始化TestClass這樣的:

let testingFunction = TestClass(action: doSomething) 

,並調用動作功能是這樣的:

testingFunction.action() 

更多信息,請參見Swift Language Guide section on function types