根据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中是否添加了更改以打破旧的行为?