Невозможно преобразовать значение типа '(Receiver) -> () -> ()' в ожидаемый тип аргумента '(_) -> (Void) -> ()' - PullRequest
0 голосов
/ 04 октября 2018

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

...