Вы используете неверный синтаксис для делегата, как вы также можете увидеть в сообщении об ошибке, у которого нет ожидаемого типа.
Чтобы объяснить более подробно, я покажу вам, как он изменится, если вырасширить его до более длинной формы делегата, вместо того чтобы использовать сокращение =>
:
(Event event) => { writeln(variableFromParentScope, event); }
становится
(Event event) { return { writeln(variableFromParentScope, event); }; }
Как видите, вы возвращаете делегата без параметров внутриваш фактический делегат. Если вы удалите =>
, ваш делегат будет работать должным образом.
Альтернативные допустимые формы для вашего параметра делегата будут:
(event) { ... }
delegate (Event event) { ... }
delegate (event) { ... }
&someMemberMethod // some object member method taking in Event as first parameter
toDelegate(&someGlobalFunction) // from std.functional
Только если вы хотите что-то вернуть, вы используете=>
стрелка. Вариант использования для () => { something }
будет делегатом, возвращающим делегата (как делегат, генерирующий делегатов для заданного ввода)
Но в вашем вопросе также неправильно, что вы вызываете эту функцию с , true
в параметрах вызова, что делает сообщение об ошибке очень запутанным, и что вы не передаете параметр события в обратный вызов, что было бы еще одной ошибкой во фрагменте кода.