DevPrep

Все темы › Современный Swift

Что такое макросы (Swift 5.9+)?

Senior PRO

Суть

Макросы — метапрограммирование на этапе компиляции: компилятор передаёт синтаксис аннотированного кода плагину (отдельному процессу на SwiftSyntax), тот возвращает новый код, и результат компилируется как обычный Swift. Макрос может только добавлять код, не изменяя и не удаляя существующий, и работает в песочнице без доступа к файлам и сети.

Важная оговорка: реализация макроса видит только AST без информации о типах. Поэтому «типобезопасность» означает, что результат раскрытия проверяется компилятором как обычный код (в отличие от рефлексии или кодогенерации текстом), а не что макрос знает типы. Раскрытие можно посмотреть в Xcode (Expand Macro).

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store