无法将类型'((接收器)->()->()'的值转换为预期的参数类型'(_)->(无效)->()'

时间:2018-10-04 08:05:09

标签: swift generics functional-programming swift4

根据this的文章,在Swift中实现了一种Event类型,让人联想到C#。

转换为Swift 4之后,以下代码将不再编译:

class Receiver {
    func doIt() {

    }
}

class Sender {
    let event = Event<Void>()
}

let sender = Sender()
let receiver = Receiver()

sender.event.addHandler(target: receiver, handler: Receiver.doIt)

错误: Cannot convert value of type '(Receiver) -> () -> ()' to expected argument type '(_) -> (Void) -> ()'

addHandler的定义:

public func addHandler<Target: AnyObject>(target: Target,
         handler: @escaping (Target) -> (DataType) -> ())

如果我将方法更改为doIt(_ a: Void),则错误已得到解决-但这似乎有点多余。

Swift 4中是否添加了更改以打破旧的行为?

0 个答案:

没有答案