Язык Swift часть 6. Простые операторы.

Что такое операторы в языке Swift?

Итак мы уже изучили базовые понятия языка Swift, узнали что такое переменные, константы. А для чего они нужны? Что с ними можно делать? Так вот для взаимодействия с переменными нужны операторы. Каждый из нас знаком со школы с базовыми операторами. Они используются повсеместно в алгебре, геометрии, физике и прочих науках. Без операторов нельзя полноценно говорить о данных и значениях.


Виды операторов

Операторы делятся на 3 категории:

  • Унарные
  • Бинарные
  • Тернарные

Унарные оперируют одним значением. Например операторы изменения знака, или оператор инкремента:

// Code from REPL
  1> var a = 5
a: Int = 5
  2> var b = -a
b: Int = -5
  3> var b = +a
b: Int = 5
  4> var b += 1
b: Int = 6

Бинарные оперируют двумя значениями. Например:

c = a + b
d = b - a

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

В swift представлены следующие виды операторов:

  • Арифметические операторы
  • Логические операторы
  • Операторы присваивания
  • Операторы сравнения
  • Другие

Арифметические операторы

ОператорСимволОписаниеПример
Сложение+Складывает 2 операндаa + b
ВычитаниеВычитает из первого операнда второйa – b
Умножение*Умножает первый операнд на второйa * b
Деление/Делит первый операнд на второй без остаткаa / b
Остаток от деления%Делит первый операнд на второй и возвращает остатокa % b

К самым простым операторам относятся символы сложения +, вычитания , умножения *, деления /, равенства =.

var a = 1
var b = 2
var c = a + b // 3
b = c - a // 2
print(c*b)  // 6

Деление по модулю записывается с использованием символа процента %. Это означает «разделить левое число на правое и вернуть остаток». Итак, 9%3 возвращает 0, потому что 9 делится на 3 без остатка, тогда как 10%3 возвращает 1, потому что 10 делится на 3 трижды, с остатком 1.

  5> 25 % 6
$R1: Int = 1
  6> 9 % 6
$R2: Int = 3

Логические операторы

ОператорСимволОписаниеПример
Логическое И&&Возвращает true если оба выражения true, иначе falsea && b
Логическое ИЛИ||Возвращает false если оба выражения false, начае truea || b
Логическое НЕ!Переворачивает значение!a
print(true  &&  true) //true
print(true  &&  false) //false
print(true  ||  false) //true
print(false  ||  false) //false
print(!false) //true

Оператор отрицания "НЕ" ! . Это просто восклицательный знак. Этот оператор заставляет значение обрести противоположный смысл существующему. Например:

var isEnable = true
isEnable // true
!isEnable // false

Получится истина, истина, ложь – с последним значением так, потому что оно перевернуло предыдущую истину.

Вы также можете использовать ! с = сделать != или "не равно". Например:

var name = "Peter"
name == "Peter" // true
name != "Peter" // false

Операторы присваивания

ОператорСимволОписаниеПример
Присваивание=Присвоить значение правого операнда левомуa = b
Сложение с присваением+=Сложить два операнда затем присвоить значение результата первомуa += b
Вычитание с присваением-=Вычесть из второго операнда первый затем присвоить значение результата первомуa -= b
Умножение с присваением*=Усножить два операнда затем присвоить значение результата первомуa *= b
Деление с присваением/=Разделить второй операнд на первый затем присвоить значение результата первомуa /= b
Модуль с присваением%=Разделить второй операнд на первый затем присвоить значение остатка первомуa %= b

Знак равенства = в языке Swift означает не равенство значений(операндов), а присвоение значения. То есть если var a = 4 означает, что переменной a присваивается значение 4. За равенство(эквивалентность) отвечает другой оператор ==.

var b = 10
b += 10
b -= 10

Что означает сначала присвоить переменной b значение 10, затем взять текущее значение пременной b, прибавить к ней 10, затем записать новое значение обратно в переменную b. -= работает наоборот – сначала отнять 10, затем присвоить новое значение переменной.

Операторы сравнения

ОператорСимволОписаниеПример
Эквивалентность==true если оба операнда эквиваленты, иначе falsea == b
Не эквивалентность!=false если оба операнда эквиваленты, иначе truea != b
Больше чем>true если левый операнд больше чем правый, иначе falsea > b
Меньше чем<false если левый операнд больше чем правый, иначе truea < b
Больше или равно>=true если левый операнд больше чем правый или равен ему, иначе falsea >= b
Меньше или равно<=false если левый операнд больше чем правый или равен ему, иначе truea <= b

В Swift есть набор операторов, выполняющих сравнение значений. Например:

var a = 1.1
var b = 2.2
var c = a + b

с > 3
с >= 3
с > 4
c < 4

Читается как: больше чем (>), больше или равно (>=) и меньше чем (<). В окне результатов вы увидите true, true, false, true – это логические значения, потому что ответ на каждое из этих утверждений может быть только истинным или ложным.

Если вы хотите проверить равенство, вы не можете использовать =, потому что он уже имеет значение: он используется для присвоения значения переменной. У Swift есть альтернатива в виде ==, что означает «равно». Например:

var name = "Peter Parker"
name == "Peter Parker"

В области результатов будет показано «истина».

Очень важная вещь, которая может вас подловить – это то, что строки в Swift чувствительны к регистру. Что означает, что «Tim McGraw», «TIM MCGRAW» и «TiM mCgRaW» считаются разными. Если вы используете == для сравнения двух строк, вам нужно убедиться, что они имеют одинаковый регистр букв.

Другие операторы

ОператорСимволОписаниеПример
Унарный плюс+Присваивает положительное значение+5
Унарный минусПрисваивает отрицательное значение-6
Тернарное условие?:Проверяет условие а затем присваивает одно из значенийусловие?a:b
let numberOfWheels = 4
// Ternary Conditional Operator
let transport = numberOfWheels <= 2 ? "motorcycle" : "car"   // "mammal"
// Эквивалентно написанию:
if numberOfWheels <= 2 {
    transport = "motorcycle"
    } else {
    transport = "car"
    }
}

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

var a = 1.1
var b = 2.2
var c = a + b

Когда дело доходит до типа String + соединяет строчки вместе. Например:

var name1 = "Peter"
var name2 = "Parker"
var both = name1 + " " + name2
// Peter Parker