Замыкания по сути тот же делегат. Там как предполагаю combine надо прикручивать.
По-моему, вся функционалка на замыканиях подвязана. Делегат - это как длинная ниточка связи между двумя сущностями, бОльшая область видимости. А вот ссылку на closure мы не храним в том представлении, из которого мы его передаём. Поэтому мне архитектурно больше нравится декларативный подход, так как легче контролировать состояние. + как delegate можно сохранить в View, если все переменные, кроме Wrapper‘ов State и StateObject пересоздаются при обновлении View?