Информация, которую мы сохраняем в свойствах и с которой работаем в коде, различается по типу данных. Это могут быть текст, числа и т.д. Ниже рассмотрим подробнее каждый из этих базовых типов данных в 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.