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

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

1 часть
10 главных конструкций языка C
2 часть
10 главных конструкций языка Go
3 часть
10 главных конструкций языка Swift
4 часть
10 главных конструкций языка Java

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

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

Мы уже писали про 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 — на английском. 

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

Текст:

Михаил Полянин

Редактура:

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

Художник:

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

Корректор:

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

Вёрстка:

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

Соцсети:

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

Веб-разработка — это новый черный
А мы знаем толк в моде и поможем освоить новую специальность за полгода.
Посмотреть
Фронтенд — это новый черный
Еще по теме
prev
next
Давид Ян
Давид Ян о системе, которая предскажет ваше увольнение

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

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

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

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

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

Что такое JSON
Что такое JSON

Храним все данные на сервере и получаем их в нужный момент.

Все опять заговорили про VPN. Что это такое, объясни мне!

Мы не можем вам сказать. Но можем показать.

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

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

Если у вас ребёнок: об информатике
Что такое искусственный интеллект

В этой статье ни одной шутки про «Скайнет».

Решение матричных уравнений
Решение матричных уравнений

Финальная глава саги.

Бустинг — ещё один способ машинного обучения

Как с помощью слабых алгоритмов сделать сильный.

Карьера аналитика данных в 26 лет: Касперский, X5 и «Много лосося»
Карьера аналитика данных в 26 лет: Касперский, X5 и «Много лосося»

Поговорили с Антоном Леоновым, выпускником ВШЭ и ментором «Практикума».

Что такое рекурсия
Что такое рекурсия

Это дом, который построил Джек.

JavaScript для новичков: чем опасны нестрогие типы данных
JavaScript для новичков: чем опасны нестрогие типы данных

В JavaScript есть удобная штука, которая может сильно вам навредить.

easy