2017-09-13 125 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 }