Базовые типы данных

Информация, которую мы сохраняем в свойствах и с которой работаем в коде, различается по типу данных. Это могут быть текст, числа и т.д. Ниже рассмотрим подробнее каждый из этих базовых типов данных в swift.

Содержимое статьи:

String — строка

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

Мы уже встречались в предыдущих статьях со способом присвоения определенного типа для свойства.

let userName: String
var surname = ""

С точки зрения присвоения типа, две строчки кода выше идентичны. И то и другое свойство будет типа String. Присвоение типа в Swift происходит явно, когда указывается какой конкретно тип данных будет хранить свойство, либо неявно, когда он вычисляется в зависимости от информации, которой свойство инициализировано. В примере выше, свойство surname инициализировано пустой строкой, такой вариант по-умолчанию принимает тип данных String.

Строковые литералы

Для объявления строки в Swift есть однострочные и многострочные литералы. Строковый литерал — последовательность текстовых символов между двойными кавычками "".

Однострочный литерал мы уже ни один раз использовали при инициализации строковых свойств, таких как userName.

let userName = "Василий"

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

let verse = "Я помню чудное мгновенье: Передо мной явился Swift, Как мимолетное виденье, Как гений чистой красоты."

Если константу из примера выше распечатать в консоли, то она останется такой же длинной строкой. В случае с длинными текстами такое решение может быть неудобным или неподходящим, для этого в Swift есть многострочный литерал.

Многострочный литерал так же представляет собой последовательность текстовых символов, но в которых есть снос строки. Наподобие многострочных комментариев. Многострочный литерал обозначается вначале и в конце тремя двойными кавычками """ .

Посмотрим на пример такого же стихотворения, но уже с переносом строки

let verse = """
Я помню чудное мгновенье:
Передо мной явился Swift,
Как мимолетное виденье,
Как гений чистой красоты.
"""

Если свойство verse из последнего примера распечатать в консоль, то вы увидите такой же стих, с переносом строк. Обратите внимание на снос строк, в данном примере показано, как лучше всего оформлять код с многострочным литералом. Первую строку можно написать на том же уровне, что и тройные двойные кавычки, но именно так код становится более читабельным и сразу понятно где начала блока строки и где ее конец.

Character — символ

Технически, все строки состоят из последовательностей символов. Из чего можем сделать вывод, что символ — это такая же строка, только длиной в 1 знак.

Символы так же инициализируются через строчный литерал:

let letterB: Character = "b"
var someLetter: Character = "B"
let thirdCharacter = "A"

В примере выше мы объявляем константу, хранящую в себе один символ — b. Во второй строчке, мы создали переменную, которой присвоили значение символа B. Обратите внимание на то, что в случае с символами, заглавная буква и строчная — это два разных символа.

Во всех трех строках мы присваиваем значение равное одному символу. В первых двух случаях явно указан тип данных Character, в последнем он вычисляется из значения. Как думаете, какой тип данных будет у константы thirdCharacter?

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

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

Целые числа

В swift есть несколько типов данных для чисел, одно из них — целочисленное значение Int, то есть integer. Как можно сделать вывод из названия, такие типы данных могут хранить только целое число и не могут хранить дроби. То есть число 0,9 в целочисленном представлении является нулем 0, а число 3,14 содержит только 3. Все знаки после запятой отбрасываются. Важно, они не округляются, а именно отбрасываются.

При присвоении свойству любого целочисленного значения, компилятор принимает его за Int.

let jordanNumber = 23
var currentScore = 88
let numberOfPlayers: Int

В примере выше мы объявили константу jordanNumber и положили в нее значение 23, ниже переменную со значением 88 и объявили константу numberOfPlayers без инициализации с типом данных Int.

Числа с плавающей точкой

Число с дробной частью является числом с плавающей точкой. В Swift есть 2 вида чисел с плавающей точкой.

  • Double — 64-битный формат числа с плавающей точкой. Используется, как тип по-умолчанию для чисел с плавающей точкой и является предпочтительным типом. Нужен для операций с большими числами и высокой точностью. Высокая точность — это до 15 знаков после запятой.
  • Float — 32-битный формат числа с плавающей точкой. Используется только при необходимости использования именно этого формата. Точность формата ограничена 6 цифрами после запятой
let numberPi = 3.14 // Число Пи, принимает тип данных Double, не требует явного указания типа
let volumeOfCan: Float = 0.33 // Принимает тип Float, необходимо указывать тип данных явно

Булевый (логический) тип

Булевый тип может принимать только 2 значения — true (истина) и false (ложь). Обычно используется для хранения данных да/нет или правда/ложь, если упрощать.

Как правило, получается в реультате работы логических выражений и проверок, например больше >/меньше <.

let iAmTheBest = true // Присваиваем свойству логическое значение true (правда/истина)

let firstNumber = 5
let secondNumber = 7

print(firstNumber > secondNumber) //Выведет на консоль результат сравнения, будет напечатано false
print(iAmTheBest) //Выведет на консоль true

В примере выше мы затрагиваем тему одной из следующих глав — Операторы сравнения. В нем мы выводим на консоль, через метод print() результат сравнения двух чисел и видим на консоли false.