swift

Переменные и константы

Введение

Когда вы начинаете изучать программирование, первое, с чем вы сталкиваетесь — это переменные и константы.

Они являются основой любой программы, как фундамент для дома, как алфавит для языка.

В этой статье мы подробно разберём, что это такое, как с ними работать и почему это так важно, хотя и так просто.

📦 Переменные и константы

Ваш код должен хранить много данных: будь то возраст, имя, список товаров и много многое другое.

⚠️ Поле — Предназначено для хранения состояния.

Оно может быть представлено либо переменной (значение допускает изменение), либо константой (значение неизменно и задаётся окончательно)

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

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.16143
let planet = "Земля"
let isWoman = true

Обратите внимание ещё раз – поля созданные как let, недоуступны к изменению.

💡 Почему в Swift есть и переменные, и константы?

Apple создала Swift с акцентом на безопасность.

Использование констант помогает:

1. Предотвратить случайные ошибки

// ❌ Плохо - можно случайно изменить важные данные
var userID = "12345"
// ... много кода ...
userID = "67890"  // Ошибка! ID пользователя не должен меняться

// ✅ Хорошо - компилятор защитит от ошибки
let userID = "12345"
// userID = "67890"  // ❌ Ошибка компиляции

2. Сделать код понятнее

// Сразу видно, какие данные могут меняться, а какие нет
let firstName = "Виктория"   // не изменится
let birthDate = "27.02.2007" // не изменится
var age = 22                 // может измениться
var city = "Москва"          // может измениться

3. Оптимизировать производительность

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

🔤 Правила именования полей

Можно использовать:

Нельзя использовать:

Примеры правильных имен:

let firstName = "Анна"
var userAge = 25
var isActive = true

⚠️ Важно!

На первый взгляд, кажется, что именования полей, функций и классов это просто, но на самом деле это огромная и важная работа.

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

Стили именования

В Swift принято использовать camelCase:

// ❌ Неправильно
let firstname
let FirstName
let first_name // Это snake_case, его принято использовать в серверной разработке

// ✅ Правильно (camelCase)
let firstName
let userLastName
let isUserLoggedIn
let maximumNumberOfItems

Запомните, пожалуйста – название полей всегда начинается с маленькой буквы.

🎨 Именование в Swift (Best Practices)

Булевы переменные

Для булевых значений принято использовать префиксы 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 = "1035" // ID не должен меняться!
userEmail = "bigPenisSmartBrain@gmail.com"  // Email не должен меняться!

Хороший пример (используем let для неизменяемых данных)

let userID = "12345"
let userEmail = "bigPenisSmartBrain@gmail.com"
let registrationDate = "2024-01-01"
var userName = "Sergei"
var userAge = 25

// userName = "Петр" // ✅ Можно
// userAge = 26      // ✅ Можно
// userID = "54321"  // ❌ Ошибка компиляции - поле не планируется менять!

Обратите внимание, что для изменения значения переменной используется одинарный знак равно (=) совсем скоро вы познакомитесь со знаком сравнения (==)

🎯 Область видимости (Scope)

Переменные и константы существуют только в том блоке кода, где они объявлены:

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) // ❌ Ошибка! Не видна за пределами функции

⚠️ Важно!

Фигурные скобки – { и } это область внутри которой выполняются действия. Если вы определили поле внутри них – область видимости данного поля ограничена фигурными скобками

Как только вы начнёте практиковаться в коде – вы это уясните, я в вас верю!

🚨 Типичные ошибки новичков

1. Попытка изменить константу

let name = "Анна"
name = "Мария"  // ❌ Ошибка!

2. Использование неинициализированной (созданной не до конца) переменной

var username
print(username)  // ❌ Ошибка! Не инициализирована

// ✅ Правильно
var username = ""
print(username)  // Пустая строка

У вас должна выработаться следующая формула: let / var + подходящее название для поля + : тип данных, которое будет хранить данное поле:

var username: String = ""

3. Неправильный тип

var number = 5
number = "пять". // ❌ Ошибка! Нельзя присвоить строку числу

var text = "hello"
text = 42        // ❌ Ошибка! Нельзя присвоить число строке

4. Игнорирование регистра букв

let userName = "Анна"
print(username) // ❌ Ошибка! Разные имена (userName и username)

// ✅ Правильно
print(userName) // "Анна"

5. Использование var везде

// ❌ Плохо - все var
var firstName = "Анна"
var birthYear = 1998
var city = "Москва"

// ✅ Хорошо - let для неизменяемых
let firstName = "Анна"
let birthYear = 1998
let city = "Москва"

6. Забыли про тип при делении

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 vs let

Характеристика var let
Можно изменить Да Нет
Безопасность Ниже Выше
Вывод Может меняться Не меняется
Производительность Стандартная Часто лучше
Когда использовать Данные изменяются Данные постоянны

При первых попытках написать код – вы наверняка столкнётесь с трудностями, но чтобы всё прошло гладно – постарайтесь хорошо освоить как данную статью, так и все последующие.

Код требует строгости в написании и не прощает малейших неточностей 😱😱😱

Задание 🚀

  1. Создайте парочку полей, которыми опишете себя
  2. Попробуйте изменить поля, которые к этому распологают (Возраст, пол)

Решение можете присылать сюда

Далее

Типы данных