AlekseyPleshkov
@AlekseyPleshkov
Java/Swift developer, transhumanist, dreamer.

Как реализовать на Swift такое (в полном сообщении пример) написание кода?

Добрый день. Подскажите, пожалуйста, как реализуется данный синтаксис?

let html = scopes { 
    html {
        body {
            h1 { inner = "hello" }
        }
    }
}


Подглядел его в библиотеке Swifter (Вроде тут вся магия)

Очень интересна сама реализация. Если знаете ссылку на документацию, буду очень благодарен (ну или название, которое погуглить).

Дошел только до такого момента.

public typealias Closure = (Void) -> Void

public func body(_ c: Closure) {
    print(c)
}

let bo = body {
    text = "test"
}


Спасибо.
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
ManWithBear
@ManWithBear
Swift Adept, Prague
Называется это Trailing Closures.
Ну собственно вы это и реализовали. Дальше просто вызываете другую функцию внутри вашего closure.
Пример с вашей реализацией:
public func body(_ c:  () -> Void) {
    print(c)
}

body {
    body {
        // second lvl
    }
    text = "test"
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы