Когда вы начинаете изучать программирование, первое, с чем вы сталкиваетесь — это переменные и константы.
Они являются основой любой программы, как фундамент для дома, как алфавит для языка.
В этой статье мы подробно разберём, что это такое, как с ними работать и почему это так важно, хотя и так просто.
Ваш код должен хранить много данных: будь то возраст, имя, список товаров и много многое другое.
⚠️ Поле — Предназначено для хранения состояния. Оно может быть представлено либо переменной (значение допускает изменение), либо константой (значение неизменно и задаётся окончательно).
Представьте, что вам нужно отобразить информацию о пользователе. В таком случае вам не обойтись без следующих полей:
let name = "Иван"
var age = 25
var temperature = 36.6
var isLoggedIn = true
Первая задача, с которой вы можете столкнуться – это выбрать правильный формат хранения.
| Тип | Ключевое слово | Можно изменять | Пример |
|---|---|---|---|
| Переменная | var |
✅ Да | var age = 25 |
| Константа | let |
❌ Нет | let name = "Виктория" |
Дело в том, что новичкам бывает сложно определиться с тем, какой вариант выбрать.
⚠️ Верный совет Начните с
letи как только вы попытаетесь поменять поле –xCodeсам подскажет, что это поле должно статьvar, вскоре вы поймёте какой из вариантов стоит выбрать изначально.
var)Для создания переменной используется ключевое слово var:
var name = "Иван"
var age = 25
var temperature = 36.6
var score = 0
var isLoggedIn = true
let)Для создания константы используется ключевое слово let:
let birthYear = 1998
let pi = 3.14159
let planet = "Земля"
let isWoman = true
// Переменную можно изменить
var username = "Иван"
username = "Петр" // username теперь – "Пётр" ✅
// Константу изменить не получится
let birthCity = "Москва"
birthCity = "Санкт-Петербург" // ❌ Ошибка! Константу изменить не получится
Apple создала Swift с акцентом на безопасность.
Использование констант помогает:
// ❌ Плохо - можно случайно изменить важные данные
var userID = "12345"
// ... много кода ...
userID = "67890" // Ошибка! ID пользователя не должен меняться
// ✅ Хорошо - компилятор защитит от ошибки
let userID = "12345"
// userID = "67890" // ❌ Ошибка компиляции
// Сразу видно, какие данные могут меняться, а какие нет
let firstName = "Виктория" // не изменится
let birthDate = "01.01.2000" // не изменится
var age = 25 // может измениться
var city = "Москва" // может измениться
Компилятор может лучше оптимизировать код с константами, зная, что их значения никогда не изменятся.
class, func, var, let)let firstName = "Анна"
var userAge = 25
var isActive = true
⚠️ Важно! На первый взгляд, кажется, что именования полей, функций и классов это просто, но на самом деле это огромная и важная работа. Только по одним лишь названиям, можно отличить хорошего программиста от посредственного.
Об этом мы ещё поговорим, но уже в другом разделе.
В Swift принято использовать camelCase:
// ❌ Неправильно
let firstname
let FirstName
let first_name
// ✅ Правильно (camelCase)
let firstName
let userLastName
let isUserLoggedIn
let maximumNumberOfItems
Для булевых значений принято использовать префиксы is, has, can, should:
var isLoggedIn = true
var hasAccess = false
var canEdit = true
var isEnabled = false
var shouldUpdate = true
var isCompleted = false
var hasData = true
// ❌ Плохо
var n = "Анна"
var a = 25
var b = true
var d = 3.14
var arr = [1, 2, 3]
// ✅ Хорошо
var firstName = "Анна"
var userAge = 25
var isStudent = true
var piValue = 3.14
var numbers = [1, 2, 3]
// ❌ Плохо
var usrNm = "Иван"
var addr = "ул. Ленина"
var calcRes = 42
var tmp = 36.6
var btn = "Кнопка"
// ✅ Хорошо
var username = "Иван"
var address = "ул. Ленина"
var calculationResult = 42
var temperature = 36.6
var buttonTitle = "Кнопка"
Наименования имеют огромное значение, однажды дав плохое имя – вы потратите уйму времени, на то, что бы понять, что делает данный код.
Код имеет тенденцию быстро забываться и чем лучше вы его опишете, тем проще вам будет его понять, когда вы вновь к нему вернётесь – обязательно старайтесь дать как можно более ясное имя как полю, так и функции, классу и всему чему бы то ни было, даже вашему ребёнку.
Константы делают код безопаснее. Рассмотрим пример:
var для полей, которые не должны меняться)var userID = "12345"
var userEmail = "user@example.com"
var registrationDate = "2024-01-01"
var userName = "Иван"
// ... много кода ...
// Ошибка! Случайно изменили важные данные
userID = "54321" // ID не должен меняться!
userEmail = "hacker@evil.com" // Email не должен меняться!
let для неизменяемых данных)let userID = "12345"
let userEmail = "user@example.com"
let registrationDate = "2024-01-01"
var userName = "Иван"
var userAge = 25
// userName = "Петр" // ✅ Можно
// userAge = 26 // ✅ Можно
// userID = "54321" // ❌ Ошибка компиляции - поле не планируется менять!
Обратите внимание, что для изменения значения переменной используется одинарный знак равно (=) совсем скоро вы познакомитесь со знаком сравнения (==)
// Значение по умолчанию – 0
var score = 0
// Простое присваивание
score = 10
print(score) // 10
// Использование текущего значения
score = score + 5
print(score) // 15
// Составные операторы
score += 3 // то же, что score = score + 3
print(score) // 18
score -= 5 // то же, что score = score - 5
print(score) // 13
score *= 2 // то же, что score = score * 2
print(score) // 26
score /= 13 // то же, что score = score / 13
print(score) // 2
let maxScore = 100
maxScore = 200 // ❌ Ошибка! Нельзя изменить константу
var maxScore = 110
maxScore = 220 // ✌️ Всё успешно! Значение изменилось
Переменные и константы существуют только в том блоке кода, где они объявлены:
func example() {
let localConstant = "Я видна только внутри функции"
var localVariable = 10
if true {
let innerConstant = "Я видна только внутри if"
var innerVariable = 20
print(localConstant) // ✅ Можно
print(innerConstant) // ✅ Можно
}
print(localConstant) // ✅ Можно
print(innerConstant) // ❌ Ошибка! Не видна за пределами if
}
print(localConstant) // ❌ Ошибка! Не видна за пределами функции
⚠️ Важно! Фигурные скобки – { и } это область внутри которой выполняются действия. Если вы определили поле внутри них – область видимости данного поля ограничена фигурными скобками
Как только вы начнёте практиковаться в коде – вы это уясните, я в вас верю!
let name = "Анна"
name = "Мария" // ❌ Ошибка!
var username
print(username) // ❌ Ошибка! Не инициализирована
// ✅ Правильно
var username = ""
print(username) // Пустая строка
У вас должна выработаться следующая формула: let / var + подходящее название для поля + тип данных, которое будет хранить данное поле:
var username: String = ""
var number = 5
number = "пять" // ❌ Ошибка! Нельзя присвоить строку числу
var text = "hello"
text = 42 // ❌ Ошибка! Нельзя присвоить число строке
let userName = "Анна"
print(username) // ❌ Ошибка! Разные имена (userName и username)
// ✅ Правильно
print(userName) // "Анна"
var везде// ❌ Плохо - все var
var firstName = "Анна"
var lastName = "Иванова"
var birthYear = 1998
var age = 25
var city = "Москва"
// ✅ Хорошо - let для неизменяемых
let firstName = "Анна"
let lastName = "Иванова"
let birthYear = 1998
var age = 25
var city = "Москва"
let a = 5
let b = 2
let result = a / b // 2 (целочисленное деление!)
// Смотрите – так как мы делим Int на Int – у нас не может получиться Double
// и в результате 5 / 2 будет равно вовсе не 2.5 а 2
// ✅ Правильно для дробного результата
let result2 = Double(a) / Double(b) // 2.5
| Характеристика | var | let |
|---|---|---|
| Можно изменить | Да | Нет |
| Безопасность | Ниже | Выше |
| Вывод | Может меняться | Не меняется |
| Производительность | Стандартная | Часто лучше |
| Когда использовать | Данные изменяются | Данные постоянны |
При первых попытках написать код – вы наверняка столкнётесь с трудностями, но чтобы всё прошло гладно – постарайтесь хорошо освоить как данную статью, так и все последюущие.
Код требует строгости в написании и не прощает малейших неточностей 😱😱😱
Всё, что ниже пока не дописал:
Решение можете присылать сюда
Поздравляю! Вы освоили Dictionary — мощный инструмент для хранения связанных данных. Теперь вы готовы к изучению:
| Тема | Описание |
|---|---|
| Множества (Set) | Коллекции уникальных значений |
| Опционалы | Безопасная работа с nil |
| Функции | Создание и использование функций |