为什么 swift 闭包抱怨没有初始化

why does swift closure complain there is no init

我有一个这样定义的处理程序:

var handler: (String, (Bool) -> Void) -> Void

我正在传递这个:

handler: ((String) -> Void)
                              { a in
                    print(a)
                }

我收到此错误,但我不知道如何修复它。

Type '(String) -> Void' has no member 'init'

当我尝试这种方式时,我遇到了同样的错误,但我认为它不正确,因为处理程序使用布尔值传入另一个闭包。

handler: (String, (Bool) -> Void) -> Void)
                              { a in
                    print(a)
                }

问题在于闭包需要两个参数:

var handler: (String, (Bool) -> Void) -> Void = { _,_  in }

handler = { a, b in
    print(a)
    b(false)
}

handler("a") { bool in print(bool) }

这将打印:

a
false