Skip to content

День 1 — Первые шаги в Swift

Сегодня мы научимся хранить текст и числа. Эти конструкции выглядят просто, но именно из них складывается состояние приложения: имя пользователя, количество покупок, цена, результат игры.

Константы: let

let создаёт значение, которое после присваивания нельзя заменить.

swift
let name = "Ваня"
let birthYear = 2007

print(name)
print(birthYear)

Если позже написать name = "Оля", компилятор остановит программу: константа уже получила значение. Это полезная защита. Используйте let по умолчанию и переходите к var, только когда изменение действительно требуется.

Переменные: var

var создаёт изменяемое значение.

swift
var score = 0
score = 10
score += 5

print(score) // 15

Тип значения при этом не меняется. Если score был целым числом, присвоить ему строку нельзя.

Что запомнить

let — значение не заменяется. var — значение может меняться. Оба имени получают конкретный тип.

Имена переменных

Swift обычно использует camelCase: первое слово начинается со строчной буквы, следующие — с заглавной.

swift
let userName = "Аня"
let numberOfLessons = 16
let isCourseFinished = false

Хорошее имя объясняет назначение значения. numberOfLessons полезнее, чем n, если это не короткая математическая формула.

Строки: String

Текст хранится в String и заключается в двойные кавычки.

swift
let greeting = "Привет, Swift!"
let quote = "Он сказал: \"Поехали!\""
let path = "C:\\Projects\\Swift"

Обратная косая черта экранирует символы: \" добавляет кавычку внутрь строки, а \\ — саму обратную косую черту.

У строки есть полезные свойства и методы:

swift
let language = "Swift"

print(language.count)       // 5
print(language.uppercased()) // SWIFT
print(language.hasPrefix("Sw")) // true

Многострочные строки

Текст на нескольких строках удобно заключать в тройные кавычки. Открывающие и закрывающие кавычки стоят на отдельных строках.

swift
let plan = """
День 1: типы данных
День 2: Bool и интерполяция
День 3: коллекции
"""

print(plan)

Отступ перед закрывающими кавычками задаёт базовый отступ, который Swift убирает из всех строк.

Целые числа: Int

Int хранит целые числа без дробной части — положительные, отрицательные и ноль.

swift
let appCount = 3
let temperature = -12
let population = 8_100_000

Подчёркивания внутри числа улучшают чтение и не меняют значение. Можно выполнять обычные операции:

swift
let first = 12
let second = 5

print(first + second) // 17
print(first - second) // 7
print(first * second) // 60
print(first / second) // 2
print(first % second) // 2

Деление двух Int отбрасывает дробную часть: 12 / 5 равно 2, а не 2.4.

Дробные числа: Double

Double хранит числа с дробной частью.

swift
let price = 149.99
let ratio = 12.0 / 5.0

print(ratio) // 2.4

Swift строго разделяет Int и Double. Их нельзя складывать без явного преобразования:

swift
let files = 5
let averageSize = 2.5
let totalSize = Double(files) * averageSize

Так компилятор заставляет вас решить, какое представление числа нужно результату.

Type inference

Type inference (вывод типа) означает, что компилятор определяет тип по начальному значению.

swift
let city = "Москва"  // String
let stations = 263   // Int
let distance = 14.7  // Double

После вывода тип закрепляется. Это даёт краткую запись без потери безопасности.

Type annotations

Type annotation (явное указание типа) записывается после двоеточия. Она нужна, когда тип нельзя вывести или вы хотите выбрать конкретный тип.

swift
let score: Double = 0
var username: String = "guest"

В первом примере без аннотации 0 стал бы Int. Не добавляйте аннотации повсюду: используйте их, когда они уточняют намерение.

Частая ошибка

Double не означает «любое число», а String не преобразуется в число автоматически. Swift предпочитает явные преобразования неожиданным результатам.

Небольшая практика

Создайте константы для названия приложения и года выпуска, переменную для количества запусков, увеличьте её на один и выведите значения. Затем попробуйте заменить var на let и прочитайте ошибку компилятора.

Практика

Checkpoint

Условие

Создайте данные профиля: имя, год рождения, рост в метрах и признак наличия подписки. Выведите одну строку с интерполяцией, а возраст рассчитайте из текущего года. Подберите тип каждого значения и объясните выбор.

Что нужно знать

  • let и var;
  • String, Int, Double, Bool;
  • интерполяция и явное преобразование типов.
Показать подсказку

Начните с let currentYear = 2026. Для текста используйте \(...); не превращайте числа в строки заранее.

Показать решение
swift
let currentYear = 2026
let name = "Мира"
let birthYear = 2005
let height = 1.68
var hasSubscription = false

let age = currentYear - birthYear
print("\(name): \(age) лет, рост \(height) м, подписка: \(hasSubscription)")

hasSubscription = true

Переход между соседними страницами: и вне полей ввода.

ОБСУЖДЕНИЕ

Комментарии

Вопросы, находки и подсказки по этой странице.

Загружаем комментарии…