Menu
Coddy logo textTech

Шпаргалка по Swift

Последнее обновление

Hello World и основы

На верхнем уровне Swift не требует шаблонного кода - запускается одна строка.

ОперацияСинтаксис
Вывести строкуprint("Hello, World!")
Вывести без перевода строкиprint("Hi", terminator: "")
Интерполяция строкprint("Hi \(name)")
Комментарий// this is a comment
Многострочный комментарий/* ... */
Импортировать модульimport Foundation
Запустить файлswift run или swift main.swift

Переменные (let / var) и типы

Используйте let для констант и var для изменяемых значений; типы обычно выводятся.

ОперацияСинтаксис
Константаlet age = 30
Переменнаяvar count = 0
Явный типlet name: String = "Ada"
Базовые типыInt, Double, String, Bool, Character
Преобразование типаDouble(i), String(n), Int("42")
Кортежlet pair = (1, "a")
Псевдоним типаtypealias ID = Int
Проверить типvalue is String, value as? String

Optional

Optional моделируют возможное отсутствие значения; извлекайте перед использованием.

ОперацияСинтаксис
Объявить optionalvar name: String? = nil
Optional bindingif let n = name { ... }
Извлечение через guardguard let n = name else { return }
Объединение с nillet n = name ?? "default"
Цепочка optionaluser?.address?.city
Принудительное извлечение (небезопасно)name!
Неявно извлекаемый optionalvar name: String!
Map по optionalname.map { $0.count }

Строки

Строки - значимые типы с полной поддержкой Unicode.

ОперацияСинтаксис
Длинаs.count
Верхний / нижний регистрs.uppercased(), s.lowercased()
Конкатенация"foo" + "bar"
Интерполяция"Total: \(price)"
Содержитs.contains("ell")
Имеет префикс / суффиксs.hasPrefix("he")
Разбитьs.split(separator: ",")
Заменитьs.replacingOccurrences(of: "a", with: "b")
Многострочная строка""" ... """

Коллекции (Array, Dictionary, Set)

Три основных типа коллекций, все - значимые типы.

ОперацияСинтаксис
Литерал массиваvar nums = [1, 2, 3]
Добавитьnums.append(4)
Доступ / количествоnums[0], nums.count
Map / filternums.map { $0 * 2 }, nums.filter { $0 > 1 }
Литерал словаряvar ages = ["Ada": 30]
Доступ к словарюages["Ada"] возвращает optional
Литерал множестваvar ids: Set = [1, 2, 3]
Вставить в множествоids.insert(4)
Перебор словаряfor (k, v) in ages { ... }

Управление потоком

Условия не требуют скобок; switch должен быть исчерпывающим.

ОперацияСинтаксис
If / elseif x > 0 { ... } else { ... }
Тернарный операторlet r = x > 0 ? "pos" : "neg"
Switchswitch n { case 1: ...; default: ... }
Switch с диапазономcase 1...5: ...
Цикл for-infor i in 0..<10 { ... }
For-in по массивуfor item in items { ... }
Цикл whilewhile x < 100 { ... }
Repeat-whilerepeat { ... } while x < 100
Break / continuebreak, continue

Функции и замыкания

У функций есть метки параметров; замыкания - самодостаточные блоки кода.

ОперацияСинтаксис
Определить функциюfunc add(a: Int, b: Int) -> Int { a + b }
Внешняя меткаfunc greet(to name: String) { ... }
Параметр по умолчаниюfunc greet(name: String = "World") { ... }
Вариативный параметрfunc sum(_ nums: Int...) -> Int { ... }
Несколько возвратов (кортеж)func bounds() -> (min: Int, max: Int) { ... }
Выражение замыканияlet f = { (x: Int) -> Int in x * x }
Замыкание в конце вызоваnums.map { $0 * 2 }
Сокращённые аргументы{ $0 + $1 }

Структуры против классов

Структуры - значимые типы (копируются); классы - ссылочные типы (общие).

ОперацияСинтаксис
Определить структуруstruct Point { var x: Int; var y: Int }
Определить классclass Person { var name: String }
Инициализатор классаinit(name: String) { self.name = name }
Создать экземплярlet p = Point(x: 1, y: 2)
Мутирующий метод структурыmutating func move() { x += 1 }
Метод классаfunc greet() { ... }
Наследование (только классы)class Student: Person { ... }
Вычисляемое свойствоvar area: Int { width * height }
Статический членstatic let shared = Manager()

Перечисления

Перечисления группируют связанные значения и могут нести ассоциированные данные.

ОперацияСинтаксис
Определить перечислениеenum Direction { case north, south }
Использовать вариантlet d = Direction.north
Switch по перечислениюswitch d { case .north: ... }
Сырые значенияenum Status: Int { case ok = 200 }
Доступ к сырому значениюStatus.ok.rawValue
Инициализация из сырого значенияStatus(rawValue: 200)
Ассоциированные значенияcase result(Int, String)
Методы у перечисленийfunc label() -> String { ... }

Синтаксис Swift, который нужен чаще всего, на одной странице. Эта шпаргалка по Swift - быстрый справочник по ядру языка: константы и переменные, optional, строки, коллекции, управление потоком, функции и замыкания, а также структуры, классы и перечисления, на которых вы строите приложения для iOS и macOS.

Всё здесь - стандартный Swift, который компилируется официальным инструментарием. Копируйте нужное или попробуйте каждый фрагмент вживую в playground для Swift - без Xcode.

Часто задаваемые вопросы по шпаргалке Swift

Эта шпаргалка по Swift бесплатна?
Да. Эта шпаргалка по Swift полностью бесплатна, регистрация не требуется. Добавьте её в закладки и возвращайтесь, когда нужно посмотреть паттерн работы с optional, синтаксис замыкания или метод коллекции.
Как извлечь optional в Swift?
Optional может содержать значение или nil, поэтому перед использованием его извлекают. Безопасные способы - optional binding (if let n = name { ... }), guard let в начале функции, оператор объединения с nil (name ?? "default") и цепочка optional (user?.name). Принудительное извлечение через name! работает, но приводит к падению, если значение nil, поэтому прибегайте к нему только когда уверены.
В чём разница между структурой и классом в Swift?
struct - это значимый тип: при присваивании или передаче создаётся копия, поэтому изменения не затрагивают оригинал. class - это ссылочный тип: копии разделяют один экземпляр, и только классы поддерживают наследование. Рекомендация Apple - по умолчанию предпочитать структуры и использовать класс, когда нужно общее изменяемое состояние или наследование.
Можно ли практиковать Swift онлайн?
Да. Откройте playground для Swift, чтобы выполнить любой фрагмент из этой шпаргалки прямо в браузере - без установки Xcode. А если нужна структура, бесплатный интерактивный курс Swift от Coddy шаг за шагом проведёт вас от optional и коллекций до структур, классов и перечислений.
Подходит ли эта шпаргалка для начинающих?
Да. Она построена от самых распространённых тем (переменные, optional, управление потоком) к продвинутым (замыкания, структуры против классов, перечисления), так что верхние разделы можно использовать с первого дня и постепенно осваивать остальное.
Coddy programming languages illustration

Изучайте Swift с Coddy

НАЧАТЬ