Типы данных Swift
Оглавление
- Что мы Что такое тип данных?
- Размер типа данных
- Типы данных Swift
— Bool
— Integer 1) Int8 и 2) UInt
— Float
— Double
- Символ
- Строка - То, что нужно запомнить
1. Что такое тип данных?
Тип данных – это тип данных (значений), которые может хранить в себе переменная или константа.
Например, в статье «Переменные и константы Swift» вы создали переменную и константу для хранения строковых данных в памяти.
Эти данные могут быть текстом/строкой («Hello»), числом (12,45) или просто битами (0 и 1). Определение типа данных обеспечивает сохранение только определенного типа данных.
Давайте рассмотрим сценарий:
Предположим, вы хотите создать игру. Поскольку в большинстве игр после завершения игры отображается рекорд и имя игрока, вам необходимо сохранить эти два данных для своей игры.
Максимальный балл — это число (например, 59), а имя игрока — строка (например, Джек). Вы можете создать две переменные или константы для хранения данных.
В Swift это можно сделать, объявив переменные и тип данных как:
var highScore:Int = 59 var playerName:String = "Jack"
Здесь мы объявили переменную highScore типа Int
, в которой хранится значение 59. И переменную playerName типа String
, в которой хранится значение Jack.
Однако, если вы сделаете что-то вроде этого:
var highScore:Int = "Jack"
Вы получите ошибку времени компиляции о том, что невозможно преобразовать значение типа «String» в указанный тип «Int».
Это потому, что вы объявили highScore для хранения целочисленного значения, но поместили в него строку. Эта ошибка гарантирует, что highScore может хранить только число, а не имя игрока.
Размер типа данных
Другой важной частью типа данных является его размер. Это определяет размер данных, которые могут быть сохранены в данной переменной или константе.
Размер типа измеряется в битах и может хранить значения до 2 бит. Если вы не знаете о бите, подумайте о нем как о значении, равном 0 или 1.
Таким образом, для Type size = 1 бит он может хранить только до, 21 = 2, два значения: либо 0, либо 1. Таким образом, 1-битная система для буквы программа может интерпретировать 0 как a/0 и 1 как b/1.0.
0 -> a or 0 1 -> b or 1
Аналогично, двухбитная система может хранить до 22 = 4 значений: (00,01,10,11), и каждая комбинация может быть представлена как:
00 -> a or 0 01 -> b or 1 11 -> c or 2 10 -> d or 3
Для n-битной системы он может хранить максимум 2n значений.
Типы данных Swift
Наиболее распространенные типы данных, используемые в Swift, перечислены ниже:
Буль
- Переменная/константа, объявленная типа Bool, может хранить только два значения либо
true
, либоfalse
. - Значение по умолчанию: false
- Он часто используется при работе с оператором
if-else
. В статье Swift if else подробно рассказывается об этом.
Пример: Логический тип данных
let result:Bool = true
print(result)
Когда вы запустите программу, вывод будет:
true
Целое число
- Переменная/константа, объявленная целочисленного типа, может хранить целые числа, как положительные, так и отрицательные, включая ноль без дробных составляющих.
- Значение по умолчанию: 0
- Размер: 32/64 бит зависит от типа платформы.
- Диапазон: от -2 147 483 648 до 2 147 483 647 (32-разрядная платформа)
от -9223372036854775808 до 9223372036854775807 (64-разрядная платформа) - Существует много вариантов типа Integer, например.
UInt
,Int8
,Int16
и т. д. Чаще всего вы используетеInt
. - Если у вас есть требование указать размер/тип целого числа, которое может содержать переменная/константа, вы можете сохранить его более конкретно, используя
UInt
,Int8
,Int16
и т. д., которые мы собираемся изучить ниже.
Пример: Целочисленный тип данных
var highScore:Int = 100
print(highScore)
highScore = -100
print(highScore)
Когда вы запустите программу, вывод будет:
100 -100
В приведенном выше примере мы объявили переменную highScore типа Int
. Сначала мы присвоили ему значение 100, поэтому print(highScore)
выводит 100 на экран.
Позже мы изменили значение на -100, используя оператор присваивания как highScore = -100
, поэтому print(highScore)
выводит на экран -100.
Давайте рассмотрим некоторые варианты типа Int
в Swift.
Int8
- Вариант типа Integer, который может хранить как положительные, так и отрицательные маленькие числа.
- Значение по умолчанию: 0
- Размер: 8 бит
- Диапазон: от -128 до 127.
Целое число Int8
может хранить в себе всего 28 = (256) значений. то есть он может хранить числа от 0 до 255, верно?
Да вы правы. Но поскольку Int8
включает в себя как положительные, так и отрицательные числа, мы можем хранить числа от -128 до 127, включая 0, что в сумме дает 256 значений или чисел.
var highScore:Int8 = -128//ok
highScore = 127 //ok
highScore = 128 // error here
highScore = -129 //error here
Вы также можете узнать самое высокое и самое низкое значение, которое может хранить тип, используя .min
и .max
, встроенные в функции Swift.
Пример: тип данных Max и Min Int8
print(Int8.min)
print(Int8.max)
Когда вы запустите программу, вывод будет:
-128 127
UInt
- Вариант типа Integer, называемый UInt (целое число без знака), который может хранить только числа без знака (положительные или нулевые).
- Не сохранять отрицательное значение
- Значение по умолчанию: 0
- Размер: 32/64 бит зависит от типа платформы.
- Диапазон: от 0 до 4294967295 (32-разрядная платформа)
от 0 до 18446744073709551615 (64-разрядная платформа)
Пример: тип данных UInt
var highScore:UInt = 100
highScore = -100//compile time error when trying to
Приведенный выше код выдаст вам ошибку времени компиляции, потому что целое число без знака может хранить только 0 или положительное значение.
Попытка сохранить отрицательное значение в целом без знака выдаст ошибку.
Плавать
- Переменные или константы, объявленные типа float, могут хранить числа с десятичными или дробными точками.
- Значение по умолчанию: 0,0.
- Размер: 32-битное число с плавающей запятой.
- Диапазон: от 1,2 * 10–38 до 3,4 * 1038 (~ 6 цифр).
Пример: тип данных с плавающей запятой
let highScore:Float = 100.232
print(highScore)
Когда вы запустите программу, вывод будет:
100.232
Двойной
- Переменные/константы, объявленные для типа Double, также хранят числа с десятичными или дробными точками как Float, но с большими десятичными точками, чем поддерживает Float.
- Значение по умолчанию: 0,0.
- Размер: 64-битное число с плавающей запятой. (Поэтому переменная типа Double может хранить числа с десятичными или дробными точками, большими, чем поддерживает Float)
- Диапазон: от 2,3*10–308 до 1,7*10308 (~15 цифр).
Пример: двойной тип данных
let highScore:Double = 100.232321212121
print(highScore)
Когда вы запустите программу, вывод будет:
100.232321212121
Характер
- Переменные/константы, объявленные для типа Character, могут хранить односимвольный строковый литерал.
- Вы можете включить смайлики или языки, отличные от английского, в качестве символа в Swift, используя escape-последовательность \u{n} (кодовая точка Unicode, n в шестнадцатеричном формате).
Пример: символьный тип данных
let playerName:Character = "J"
let playerNameWithUnicode:Character = "\u{134}"
print(playerName)
print(playerNameWithUnicode)
Когда вы запустите программу, вывод будет:
J Ĵ
Нить
- Переменные или константы, объявленные типа String, могут хранить коллекцию символов.
- Значение по умолчанию: « » (пустая строка)
- Это тип значения. См. раздел Значение Swift и тип ссылки.
- Вы можете использовать цикл for-in для перебора строки. См. Цикл for-in в Swift.
- Swift также поддерживает несколько специальных escape-последовательностей, чтобы использовать их в строке. Например,
\0
(нулевой символ),\\
(простая обратная косая черта \),\t
(символ табуляции),\v
(вертикальная вкладка),\r
(возврат каретки),\"
(двойная кавычка),\'
(одинарная кавычка) и\u{n}
(кодовая точка Юникода, n в шестнадцатеричном формате).
Пример: строковый тип данных
let playerName = "Pratik" let playerNameWithQuotes = "\"Pratik\"" let playerNameWithUnicode = "\u{0050}ratik" print(playerName) print(playerNameWithQuotes) print(playerNameWithUnicode)
Когда вы запустите программу, вывод будет:
Pratik “Pratik" Pratik
В дополнение к этим типам данных в Swift есть и другие расширенные типы данных, такие как кортеж, необязательный, диапазон, класс. strong>, структура и т. д., о которых вы узнаете в последующих главах.
То, что нужно запомнить
1. Поскольку Swift — это язык вывода типов, переменные или константы могут автоматически определять тип из сохраненного значения. Таким образом, вы можете пропустить тип при создании переменной или константы. Однако вы можете подумать о написании типа для удобства чтения, но это не рекомендуется.
Пример. Введите предполагаемую переменную/константу
let playerName = “Pratik"
print(playerName)
Компилятор Swift может автоматически определить, что переменная имеет тип String из-за ее значения.
2. Swift — типобезопасный язык. Если вы определяете переменную определенного типа, вы не сможете позже изменить ее на другой тип данных.
Пример. Swift — типобезопасный язык.
let playerName:String
playerName = 55 //compile time error
Приведенный выше код создаст ошибку, потому что мы уже указали, что переменная playerName будет строкой. Поэтому мы не можем хранить в нем целое число.
Спасибо, что зашли так далеко. Пожалуйста, обращайтесь с любыми вопросами, комментариями или предложениями для будущих сообщений. Спасибо за прочтение!!! 📚