Типы данных Swift (с примерами)

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

Тип данных - это тип данных (значения), которые могут храниться в переменной или константе. Например, в статье «Переменные и константы Swift» вы создали переменную и константу для хранения строковых данных в памяти.

Эти данные могут быть текстом / строкой ("Hello"), числом (12,45) или просто битами (0 и 1). Определение типа данных гарантирует, что будет сохранен только определенный тип данных.

Давайте посмотрим на сценарий:

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

Рекорд - это число (например, 59), а имя игрока - строка (например, Джек). Вы можете создать две переменные или константы для хранения данных.

В Swift это можно сделать, объявив переменные и тип данных как:

 var highScore: Int = 59 var playerName: String = "Джек"

Здесь мы объявили переменную типа highScore, в Intкоторой хранится значение 59. И переменную playerName типа, в Stringкоторой хранится значение Jack.

Однако, если вы сделаете что-то вроде этого:

 var highScore: Int = "Джек"

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

Это потому, что вы объявили highScore для хранения целочисленного значения, но поместили в него строку. Эта ошибка гарантирует, что highScore может хранить только число, а не имя игрока.

Размер типа данных

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

A Type в размер измеряется в терминах бита и может хранить значения Шифрование до 2 -х битов . Если вы не знаете о Bit, подумайте о нем как о значении 0 или 1.

Итак, для Type size = 1 бит он может хранить только до 2 1 = 2, два значения: либо 0, либо 1. Таким образом, 1-битная система для буквенной программы может интерпретировать 0 как / 0 и 1 как b / 1.0.

 0 -> a или 0 1 -> b или 1

Точно так же двухбитная система может хранить до 2 2 = 4 значений: (00,01,10,11), и каждая комбинация может быть представлена ​​как:

 00 -> a или 0 01 -> b или 1 11 -> c или 2 10 -> d или 3

Для битовой системы в ней может храниться максимум 2 n значений.

Типы данных Swift

Наиболее распространенные типы данных, используемые в swift, перечислены ниже:

Bool

  • Переменная / константа, объявленная типа Bool, может хранить только два значения либо, trueлибо false.
  • Значение по умолчанию : false
  • Часто используется при работе с if-elseоператором. Об этом подробно рассказывается в статье Swift if else.

Пример 1: логический тип данных

 let result:Bool = true print(result)

Когда вы запустите программу, вывод будет:

 правда

Целое число

  • Переменная / константа, объявленная целочисленного типа, может хранить как положительные, так и отрицательные целые числа, включая ноль, без дробных компонентов.
  • Значение по умолчанию : 0
  • Размер : 32/64 бит зависит от типа платформы.
  • Диапазон : от -2 147 483 648 до 2 147 483 647 (32-разрядная платформа) от
    -9223372036854775808 до 9223372036854775807 (64-разрядная платформа
  • Существует много вариантов типа Integer, например UInt, Int8и Int16т. Д. Самый распространенный из них - Int.
  • Если у вас есть требование указать размер / тип целого числа, которое может содержать переменная / константа, вы можете сохранить его более конкретно, используя UInt, Int8и Int16т. Д., Которые мы собираемся изучить ниже.

Пример 2: Целочисленный тип данных

 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

  • Вариант целочисленного типа, который может хранить как положительные, так и отрицательные маленькие числа.
  • Значение по умолчанию : 0
  • Размер : 8 бит
  • Диапазон : от -128 до 127

Int8Целое число может хранить в общей сложности 2 8 = (256) значения в нем. т.е. он может хранить числа от 0 до 255, верно?

Yes, you are correct. But since, Int8 includes both positive and negative numbers we can store numbers from -128 to 127 including 0 which totals to 256 values or numbers.

 var highScore:Int8 = -128//ok highScore = 127 //ok highScore = 128 // error here highScore = -129 //error here 

You can also find out the highest and lowest value a type can store using .min and .max built in Swift functions.

Example 3: Max and Min Int8 data type

 print(Int8.min) print(Int8.max) 

When you run the program, the output will be:

 -128 127

UInt

  • Variant of Integer type called UInt (Unsigned Integer) which can only store unsigned numbers (positive or zero).
  • Default Value: 0
  • Size: 32/64 bit depends on the platform type.
  • Range: 0 to 4294967295 (32 bit platform)
    0 to 18446744073709551615 (64 bit platform)

Example 4: UInt data type

 var highScore:UInt = 100 highScore = -100//compile time error when trying to 

The above code will give you a compile time error because a Unsigned Integer can only store either 0 or a positive value. Trying to store a negative value in an Unsigned Integer will give you an error.

Float

  • Variables or Constants declared of float type can store number with decimal or fraction points.
  • Default Value: 0.0
  • Size: 32 bit floating point number.
  • Range: 1.2*10-38 to 3.4 * 1038 (~6 digits)

Example 5: Float data type

 let highScore:Float = 100.232 print(highScore) 

When you run the program, the output will be:

 100.232

Double

  • Variables / Constants declared of Double type also stores number with decimal or fraction points as Float but larger decimal points than Float supports.
  • Default value : 0.0
  • Size: 64-bit floating point number. (Therefore, a variable of type Double can store number with decimal or fraction points larger than Float supports)
  • Range: 2.3*10-308 to 1.7*10308 (~15 digits)

Example 6: Double data type

 let highScore:Double = 100.232321212121 print(highScore) 

When you run the program, the output will be:

 100.232321212121

Character

  • Variables/Constants declared of Character type can store a single-character string literal.
  • You can include emoji or languages other than english as an character in Swift using escape sequence u(n) (unicode code point ,n is in hexadecimal).

Example 7: Character data type

 let playerName:Character = "J" let playerNameWithUnicode:Character = "u(134)" print(playerName) print(playerNameWithUnicode) 

When you run the program, the output will be:

 J Ĵ

String

  • Variables or Constants declared of String type can store collection of characters.
  • Default Value: "" (Empty String)
  • It is Value type. See Swift value and Reference Type .
  • You can use for-in loop to iterate over a string. See Swift for-in loop.
  • Swift also supports a few special escape sequences to use them in string. For example,
    • (null character),
    • \ (a plain backslash ),
    • (a tab character),
    • v (a vertical tab),
    • (carriage return),
    • " (double quote),
    • \' (single quote), and
    • u(n) (unicode code point ,n is in hexadecimal).

Example 8: String data type

 let playerName = "Jack" let playerNameWithQuotes = " "Jack "" let playerNameWithUnicode = "u(134)ack" print(playerName) print(playerNameWithQuotes) print(playerNameWithUnicode) 

When you run the program, the output will be:

 Jack "Jack" Ĵack 

See Swift characters and strings to learn more about characters and strings declaration, operations and examples.

In addition to this data types, there are also other advanced data types in Swift like tuple, optional, range, class, structure etc. which you will learn in later chapters.

Things to remember

1. Since Swift is a type inference language, variables or constants can automatically infer the type from the value stored. So, you can skip the type while creating variable or constant. However you may consider writing the type for readability purpose but it’s not recommended.

Example 9: Type inferred variable/constant

 let playerName = "Jack" print(playerName) 

Swift compiler can automatically infer the variable to be of String type because of its value.

2. Swift is a type safe language. If you define a variable to be of certain type you cannot change later it with another data type.

Пример 10: Swift - это типобезопасный язык

 let playerName:String playerName = 55 //compile time error 

Приведенный выше код вызовет ошибку, потому что мы уже указали, что переменная playerName будет String. Поэтому мы не можем хранить в нем целое число.

Интересные статьи...