Ответ
Да, сниппеты кода в Xcode поддерживают заполнители (placeholders) и токены для динамического ввода и подсказок.
Синтаксис заполнителей:
// Базовый заполнитель
let <#variableName#> = <#initialValue#>
// Заполнитель с пояснением и типом
let <#T##title: String##String#> = "Hello"
// При вставке пользователь увидит: "title: String"
Практический пример создания сниппета:
- Выделите код в редакторе.
- Перетащите его в библиотеку сниппетов (нижняя часть панели Library,
Cmd+Shift+L). - В настройках сниппета задайте:
- Title: Создать сетевой запрос
- Completion Shortcut:
netreq - Language: Swift
- Snippet:
func fetch<T: Decodable>(from urlString: String) async throws -> T { guard let url = URL(string: urlString) else { throw URLError(.badURL) } let (data, _) = try await URLSession.shared.data(from: url) return try JSONDecoder().decode(T.self, from: data) }
Системные токены (доступны через меню { }):
<#...#>— стандартный заполнитель.<#T##Type##TypeName#>— заполнитель с подсказкой типа.<#T##x: Int##Int#>— заполнитель с именем и типом.#file,#function,#line— вставляются как литералы.
Работа с заполнителями: После вставки сниппета нажмите Tab для перехода между заполнителями и Enter для завершения редактирования.
Ответ 18+ 🔞
Слушай, а вот этот ваш Xcode — он же не просто тупой редактор, как блокнот, а там реально есть приколы! Например, сниппеты. Это не просто куски кода, которые ты сохранил, чтобы не писать сто раз одно и то же. Это, блядь, целые сценарии с заполнителями, как в умной анкете!
Вот смотри, как это выглядит, когда пишешь:
// Обычный плейсхолдер — просто дырка для текста
let <#variableName#> = <#initialValue#>
// А вот это уже поинтереснее, с подсказкой
let <#T##title: String##String#> = "Hello"
// Когда вставишь, увидишь прямо в коде: "title: String" — и сразу понятно, что сюда пихать.
А как самому такую штуку сварганить? Да проще пареной репы, ёпта!
- Написал в редакторе код, который вечно повторяешь. Выделил его.
- Поймал мышкой и потащил вниз, в ту самую библиотеку сниппетов (панелька Library,
Cmd+Shift+L). - Там откроется настройка. Заполняешь поля:
- Название (Title): Ну, например, «Создать сетевой запрос».
- Шорткат (Completion Shortcut):
netreq— пишешь это в коде, и он подставится. - Язык (Language): Swift, естественно.
- Сам сниппет (Snippet): Вот сюда и вставляешь свой умный код с этими
<#...#>.
Вот, например, годный сниппет для запроса в сеть:
func fetch<T: Decodable>(from urlString: String) async throws -> T {
guard let url = URL(string: urlString) else {
throw URLError(.badURL)
}
let (data, _) = try await URLSession.shared.data(from: url)
return try JSONDecoder().decode(T.self, from: data)
}
Ещё есть системные штуки, их можно вставить через меню { }:
<#...#>— классическая дырка.<#T##Type##TypeName#>— дырка с намёком на тип.<#T##x: Int##Int#>— дырка с именем и типом, вообще красота.#file,#function,#line— это макросы, они сами подставятся.
А главный лайфхак: После того как вставил сниппет, жми Tab — курсор будет прыгать по всем этим заполнителям. Отредактировал один — Tab — перешёл к следующему. Закончил — Enter, и всё, ты уже в конце конструкции, готов писать дальше. Удобно, блядь, как! В рот меня чих-пых, раньше-то я этого не знал и всё руками переписывал!