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