Чтобы быстро начать программировать на языке, достаточно знать несколько основных конструкций и общих правил написания кода. Со временем вы освоите все нюансы, а на старте можно использовать что-то попроще.
Мы уже писали про Swift — что умеет этот язык и для чего он нужен. Теперь посмотрим, из чего он состоит и как можно быстро вникнуть в код на Свифте.
О чём пойдёт речь
Оператор множественного выбора case
Циклы с постусловием while и repeat-while
🤔 Мы обещали 10 конструкций, но в итоге получилось 12. Простите :-)
Переменные
В Swift используют две основных команды:
- var — для обозначения переменной;
- 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 — на английском.
Или оставайтесь у нас, мы будем рассказывать про технологии и программирование на русском :-)