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

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.

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

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

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

На самом деле 12, но 10 — красиво.

Что такое прошивка
Что такое прошивка

Заглядываем внутрь простой электроники

Лучшие одноплатные мини-компьютеры для работы и кодинга
Лучшие одноплатные мини-компьютеры для работы и кодинга

Системники размером с пачку чая

Chrome OS — операционная система из браузера
Chrome OS — операционная система из браузера

Работает быстро, но с множеством ограничений

Как работает 3D-принтер
Как работает 3D-принтер

И что можно на нём напечатать.

Устанавливаем Вордпресс в Docker
Устанавливаем Вордпресс в Docker

Это быстрее и проще, чем кажется.

Rust — молодой и дерзкий язык программирования
Rust — молодой и дерзкий язык программирования

Говорят, что это одновременно C++ и Haskell.

Растровая и векторная графика: это как?
Растровая и векторная графика: это как?

Как-нибудь так…

Что не так с программированием в школе
Почему школьники не любят уроки программирования

Почему обучение основам программирования в школах такое ужасное и что с этим можно сделать.

Почему в школе до сих пор изучают Pascal
Почему в школе до сих пор изучают Pascal

Паскаль. Турбо Паскаль!

easy