闭包分配的命名函数参数中断类型推断

时间:2019-06-05 20:46:29

标签: swift closures

我试图将一个类的两个不同方法(相同签名)分配给一个变量,以便稍后执行,但是当一个方法具有命名参数时,分配将中断。我觉得这可能是某种错误,但是不想那么天真。这是最简单的示例:

class ClassA {
    func foo(_ bool1: Bool, _ bool2: Bool) {
        print("foo")
    }

    func bar(_ bool1: Bool, bool2: Bool) {
        print("bar")
    }
}

let myFunc: (ClassA) -> (Bool, Bool) -> Void
//myFunc = { c in ClassA.foo(c) } // fine
myFunc = { c in ClassA.bar(c) } // Cannot assign value of type '(ClassA) -> (Bool, Bool) -> ()' to type '(ClassA) -> (Bool, Bool) -> Void'

我参考了SE-0110 distinguishing between single tuple and multiple argument types上的这一已实施的演进建议,以获取一些提示,但并没有提出太多建议。我还尝试了许多括号的变体。


Swift版本5.0,Xcode 10.2.1

0 个答案:

没有答案