2017-09-13 127 views
-1

我有一個可選的封閉爭論這樣的方法:與布爾返回類型可選封

func when(_ name:String, state:State = .normal, closure:(() -> Bool)? = nil) 
{ 
    ... 
} 

我打電話給他們這樣的:

when("I do something") 
{ 
    if !self.doSomething() { return false } 
    if !self.doSomethingElse() { return false } 
    return true 
} 

這給了我一個編譯時錯誤:

Error: cannot convert value of type '()' to expected argument type 'Bool'

這是怎麼回事?爲什麼Swift會看到一個類型(),其中Bool是預期的?

+0

@dhi n的答案畢竟是正確的!我有一些方法錯過了' - > Bool'返回類型。 – BadmintonCat

+0

試試這個cz你的閉包返回bool但不是你的函數 – Ishika

+0

@Ishika但是我的'when'方法本身不應該返回任何東西,只有閉包。 – BadmintonCat

回答

3

你的功能self.doSomething()self.doSomethingElse()不返回布爾值

而不是

func doSomething() { return true }

它應該是這樣的

func doSomething() -> Bool { return true }