Реализован тип Event
в Swift, напоминающий 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 добавлено изменение, которое нарушает старое поведение?