10 главных конструкций языка Swift
easy

10 главных конструкций языка Swift

Быстрый гайд по языку.

Чтобы быстро начать программировать на языке, достаточно знать несколько основных конструкций и общих правил написания кода. Со временем вы освоите все нюансы, а на старте можно использовать что-то попроще.

Мы уже писали про Swift — что умеет этот язык и для чего он нужен. Теперь посмотрим, из чего он состоит и как можно быстро вникнуть в код на Свифте.

О чём пойдёт речь

Переменные

Комментарии

Ввод данных с клавиатуры

Вывод данных в терминал

Присваивание и сравнение

Условный оператор if

Оператор множественного выбора case

Цикл с предусловием for-in

Циклы с постусловием while и repeat-while

Функции

Классы

Объекты

🤔 Мы обещали 10 конструкций, но в итоге получилось 12. Простите :-)

Переменные

В Swift используют две основных команды: 

  1. var — для обозначения переменной;
  2. let — для того, чтобы задать константу.

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

var myVar = 42
let myConst = 42

Если нужно указать, что переменная должна иметь дробную часть, то делают так:

var myVar: Double = 40

Обратите внимание — Свифт не требует точки с запятой после каждой команды (и не считает ошибкой, если вы их поставите). Но если вы захотите написать несколько команд на одной строке, то точка с запятой понадобится, чтобы отделить одну команду от другой:

var s = 20; let q = ‘string’

Комментарии

Комментарии оформляются так же, как и в JavaScript — двойным слешем:

// привет, это комментарий

Ввод данных с клавиатуры

Чтобы ввести данные с клавиатуры, применяют команду readLine(). С её помощью можно ввести любые значения в какую угодно переменную, если ей подойдёт то, что мы написали.

// запрашиваем число у пользователя
print("Введите число: ")
// вводим число с клавиатуры
var num = readLine()
// теперь в переменной num хранится то, что мы ввели

Вывод данных в терминал

Для стандартного вывода данных можно использовать команду print() или println(). Они отличаются тем, что в первой команде курсор остаётся на той же строке, а во второй курсор после вывода перейдёт на новую строчку.

// После вывода «Привет» курсор останется на этой же строке, сразу после буквы «т»
print("Привет")
// а после этой команды курсор перейдёт на новую строку
println("Это журнал Код")
// в итоге у нас получится надпись «ПриветЭто журнал Код»

Присваивание и сравнение

Присваивание обозначается одним знаком равно, а проверка на равенство — двумя:

// это присваивание
var s = 2
s = 5
// а это — сравнение
s == 1

Ещё есть другие, тоже привычные всем операторы сравнения:

  • равно (a == b)
  • не равно (a != b)
  • больше (a > b)
  • меньше (a < b)
  • больше или равно (a >= b)
  • меньше или равно (a <= b)

Команды сравнения чаще всего используются в циклах и условных операторах.

Условный оператор if

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

// если условие выполняется — выводим сообщение
if team > 50 {
        print("Вы превысили допустимое число команд")
// в противном случае увеличиваем групповой счёт на единицу
} else {
       groupScore += 1
}

Условные операторы можно вкладывать друг в друга сколько угодно раз, а внутри писать сколько угодно команд. Иногда для упрощения кода используют оператор множественного выбора.

Оператор множественного выбора case

Допустим, мы показали пользователю меню с выбором действий, и теперь ему нужно ввести номер команды из меню. В зависимости от того, что введёт пользователь, мы должны выполнить разные команды. В Swift для этого используют оператор case:

let menu = readLine()
switch menu {
// если введена единица
case 1:
    visibleComment = "Пользователь добавлен в список"
// если пользователь ввёл 2 или 3
case 2, 3:
    accessLevel = true
// если ввёл 4
case 4:
    print("Не хватает прав доступа")
// если ввёл любое другое значение
default:
     print("Такой команды нет в меню")
     accessCounr += 1
}

Цикл с предусловием for-in

Чтобы работать с циклом, где точно известно число повторений, используют последовательность с нужным числом элементов. Это очень похоже на то, что есть в Python:

// переменная цикла
var i = 0;
// делаем цикл от 1 до 5, включая 1 и 5
for i in 1...5 {
     // выводим текущее значение переменной цикла
    println(i)
}

Ещё вариант  — использовать команду where, которая определяет условия выборки из последовательности:

// берём последовательность от 0 до 10 и используем для цикла только те числа, которые делятся на 2 без остатка
for i in 0...10 where i % 2 == 0 {
    // получается, что на экране будут только чётные числа
    println(i)
}

Циклы с постусловием while и repeat-while

Если мы не знаем, сколько раз будет выполняться наш цикл, но знаем, что пока условие верное, цикл должен работать, — то в этом случае используют цикл while:

// переменная цикла
var i = 10
// пока переменная больше ноля — цикл выполняется
while i > 0 {
    // выводим текущее значение переменной
    print(i)
    // уменьшаем значение переменной на единицу
    i -= 1
}

С этим циклом есть один нюанс: если условие сразу не выполняется, то цикл вообще не запустится и то, что написано внутри,  тоже ни разу не сработает. Если же нам нужно, чтобы цикл выполнился как минимум один раз, а потом уже запускал все проверки, используют цикл repeat-while. Он как бы переворачивает цикл вверх ногами: сначала команды, а потом проверка:

// переменная цикла
var i = 10
// сразу запускаем цикл, на первом шаге без проверки
repeat {
    // выводим текущее значение переменной
    print(i)
    // уменьшаем значение переменной на единицу
    i -= 1
// пока переменная больше ноля — цикл продолжает выполняться
} while i > 0

Функции

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

func hello(){
print(«Привет, это журнал Код»)
}

Эта функция ничего не возвращает, а при вызове hello() просто выводит на экран нужную фразу. 

Если мы хотим передать в функцию какие-то параметры, то их нужно прописать в круглых скобках при объявлении:

func hello(name: String){

    print("Привет, \(name) ; , это журнал Код")
}
// вызываем функцию
hello(name: "Миша") 
// Привет, Миша, это журнал Код

Чтобы функция возвращала какое-то значение, мы должны указать тип этого значения, например, что функция вернёт строку или число:

func hello(name: String) -> String{
	// возвращаем новую строку с именем внутри
	return("Привет, \(name) ; , это журнал Код")
}
// вызываем функцию  с помощью команды вывода на экран
print(hello(name: "Миша"))
// Привет, Миша, это журнал Код

Классы

Классы определяются так, как это принято в ООП — сначала идёт название класса, потом переменные (свойства класса) и функции (методы класса, если они нужны):

// объявляем новый класс
class User {
    // определяем возраст пользователя по умолчанию
    var age: Int = 18
    // переменная для хранения имени пользователя
    var name: String = ""
    
    // метод внутри класса
    func newUser(){
        print("Это новый клиент, предложите ему бонусную карту")
    }
}

Объекты

Чтобы создать новый объект на основе класса, берут переменную и присваивают ей значение этого класса. После этого можно работать с любыми свойствами объекта, прописанного в классе, и вызывать любые методы:

// создаём объект класса User
// теперь клиент mike — это наш новый объект со всеми свойствами класса
var mike: User = User()
// задаём возраст клиента
mike.age = 22
// и его имя
mike.name = "Миша"
// выводим имя клиента на экран
print(mike.name) 
// вызываем метод класса
mike.new()  
// на экране появится надпись "Это новый клиент, предложите ему бонусную карту"

👉 Если пока не знаете, зачем нужны классы и объекты, прочитайте наш цикл статей про объектно-ориентированное программирование.

Что ещё

Можно почитать официальную документацию по Swift на сайте Apple.com — на английском. 

Или оставайтесь у нас, мы будем рассказывать про технологии и программирование на русском :-)

Редактура:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Мария Дронова

Соцсети:

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
Давид Ян о системе, которая предскажет ваше увольнение
Давид Ян о системе, которая предскажет ваше увольнение

Большой разговор в подкасте «Запуск завтра».

Верстаем в сетке
Верстаем в сетке

Разбираем, как можно расположить текст и фото в CSS Grid.

medium
Декомпозиция задач: что это и зачем нужно
Декомпозиция задач: что это и зачем нужно

И как сделать так, чтобы всё шло по плану.

easy
Аналитик данных: чем занимается и как им стать
Аналитик данных: чем занимается и как им стать

Собрали всё, что нужно знать для начала

easy
UTF: что такое универсальная кодировка
UTF: что такое универсальная кодировка

Продолжение рассказа про Юникод

easy
Кто такой девопс и что он делает
Кто такой девопс и что он делает

Это как системный администратор и программист в одном лице.

easy
Лучшие языки программирования для старта в 2020 году
Лучшие языки программирования для старта в 2020 году

Что выбрать, если хочешь стать программистом в этом году.

easy
Системный администратор — что нужно знать, чтобы получать 160 000 рублей
Системный администратор — что нужно знать, чтобы получать 160 000 рублей

Это не тот администратор, который ставит вам Windows.

easy
Как пользователь случайно взломал систему безопасности Android
Как пользователь случайно взломал систему безопасности Android

И получил за это 70 000 долларов

medium
easy