Учебники

Swift — Типы данных

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

Вам может потребоваться хранить информацию различных типов данных, таких как строка, символ, широкий символ, целое число, число с плавающей запятой, логическое значение и т. Д. На основе типа данных переменной операционная система выделяет память и решает, что можно сохранить в зарезервированном объем памяти.

Встроенные типы данных

Swift 4 предлагает программисту богатый ассортимент как встроенных, так и определяемых пользователем типов данных. Следующие типы базовых типов данных чаще всего используются при объявлении переменных:

  • Int или UInt — используется для целых чисел. Более конкретно, вы можете использовать Int32, Int64 для определения 32- или 64-разрядного целого числа со знаком, тогда как UInt32 или UInt64 для определения 32- или 64-разрядных целочисленных переменных без знака. Например, 42 и -23.

  • Число с плавающей запятой — используется для представления 32-разрядного числа с плавающей запятой и чисел с меньшими десятичными точками. Например, 3,14159, 0,1 и -273,158.

  • Double — используется для представления 64-битного числа с плавающей запятой и используется, когда значения с плавающей запятой должны быть очень большими. Например, 3,14159, 0,1 и -273,158.

  • Bool — Это представляет логическое значение, которое является или истиной или ложью.

  • Строка — это упорядоченная коллекция символов. Например, «Привет, мир!»

  • Символ — это односимвольный строковый литерал. Например, «С»

  • Необязательно — представляет переменную, которая может содержать либо значение, либо отсутствие значения.

  • Кортежи — это используется для группировки нескольких значений в одно составное значение.

Int или UInt — используется для целых чисел. Более конкретно, вы можете использовать Int32, Int64 для определения 32- или 64-разрядного целого числа со знаком, тогда как UInt32 или UInt64 для определения 32- или 64-разрядных целочисленных переменных без знака. Например, 42 и -23.

Число с плавающей запятой — используется для представления 32-разрядного числа с плавающей запятой и чисел с меньшими десятичными точками. Например, 3,14159, 0,1 и -273,158.

Double — используется для представления 64-битного числа с плавающей запятой и используется, когда значения с плавающей запятой должны быть очень большими. Например, 3,14159, 0,1 и -273,158.

Bool — Это представляет логическое значение, которое является или истиной или ложью.

Строка — это упорядоченная коллекция символов. Например, «Привет, мир!»

Символ — это односимвольный строковый литерал. Например, «С»

Необязательно — представляет переменную, которая может содержать либо значение, либо отсутствие значения.

Кортежи — это используется для группировки нескольких значений в одно составное значение.

Мы перечислили здесь несколько важных моментов, связанных с целочисленными типами —

  • На 32-битной платформе Int имеет тот же размер, что и Int32.

  • На 64-битной платформе Int имеет тот же размер, что и Int64.

  • На 32-битной платформе UInt имеет тот же размер, что и UInt32.

  • На 64-битной платформе UInt имеет тот же размер, что и UInt64.

  • Int8, Int16, Int32, Int64 могут использоваться для представления 8-битных, 16-битных, 32-битных и 64-битных форм целого числа со знаком.

  • UInt8, UInt16, UInt32 и UInt64 могут использоваться для представления 8-битных, 16-битных, 32-битных и 64-битных форм целых чисел без знака.

На 32-битной платформе Int имеет тот же размер, что и Int32.

На 64-битной платформе Int имеет тот же размер, что и Int64.

На 32-битной платформе UInt имеет тот же размер, что и UInt32.

На 64-битной платформе UInt имеет тот же размер, что и UInt64.

Int8, Int16, Int32, Int64 могут использоваться для представления 8-битных, 16-битных, 32-битных и 64-битных форм целого числа со знаком.

UInt8, UInt16, UInt32 и UInt64 могут использоваться для представления 8-битных, 16-битных, 32-битных и 64-битных форм целых чисел без знака.

Связанные значения

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

Тип Типичная ширина бита Типичный диапазон
iNT8 1 байт От -127 до 127
uint8 1 байт От 0 до 255
Int32 4 байта От -2147483648 до 2147483647
UInt32 4 байта От 0 до 4294967295
Int64 8bytes От -9223372036854775808 до 9223372036854775807
UInt64 8bytes От 0 до 18446744073709551615
терка 4 байта 1,2E-38 до 3,4E + 38 (~ 6 цифр)
двойной 8bytes 2,3E-308 до 1,7E + 308 (~ 15 цифр)

Введите псевдонимы

Вы можете создать новое имя для существующего типа, используя typealias . Вот простой синтаксис для определения нового типа с помощью typealias —

typealias newname = type

Например, следующая строка указывает компилятору, что Feet — это другое имя для Int

typealias Feet = Int

Теперь следующее объявление является абсолютно допустимым и создает целочисленную переменную с именем distance —

Live Demo

typealias Feet = Int
var distance: Feet = 100
print(distance)

Когда мы запускаем вышеуказанную программу, используя площадку, мы получаем следующий результат.

100

Тип безопасности

Swift 4 — это типобезопасный язык, который означает, что если часть вашего кода ожидает String, вы не можете передать ему Int по ошибке.

Поскольку Swift 4 безопасен для типов, он выполняет проверки типов при компиляции кода и помечает любые несовпадающие типы как ошибки.

Live Demo

var varA = 42
varA = "This is hello"
print(varA)

Когда мы компилируем вышеуказанную программу, она выдает следующую ошибку времени компиляции.

main.swift:2:8: error: cannot assign value of type 'String' to type 'Int'
varA = "This is hello"

Вывод типа

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

Live Demo

// varA is inferred to be of type Int
var varA = 42
print(varA)

// varB is inferred to be of type Double
var varB = 3.14159
print(varB)

// varC is also inferred to be of type Double
var varC = 3 + 0.14159
print(varC)

Когда мы запускаем вышеуказанную программу, используя площадку, мы получаем следующий результат —