Tipos de dados Swift (com exemplos)

Neste tutorial, você aprenderá sobre os diferentes tipos de dados que a linguagem de programação Swift suporta e os usará ao criar uma variável ou constante.

Um tipo de dados é o tipo de dados (valor) que uma variável ou constante pode armazenar nele. Por exemplo, no artigo Swift Variables and Constants, você criou uma variável e uma constante para armazenar dados de string na memória.

Esses dados podem ser um texto / string ("Hello") ou um número (12,45) ou apenas bits (0 e 1). Definir o tipo de dados garante que apenas o tipo de dados definido seja armazenado.

Vejamos um cenário:

Suponha que você queira criar um jogo. Como a maioria dos jogos exibe a pontuação mais alta e o nome do jogador após a conclusão do jogo, você precisa armazenar esses dois dados para o seu jogo.

A pontuação mais alta é um número (por exemplo, 59) e o nome do jogador uma string (por exemplo, Jack). Você pode criar duas variáveis ​​ou constantes para armazenar os dados.

Em Swift, isso pode ser feito declarando variáveis ​​e o tipo de dados como:

 var highScore: Int = 59 var playerName: String = "Jack"

Aqui, declaramos a variável highScore do tipo Intque armazena o valor 59. E a variável playerName do tipo Stringque armazena o valor Jack.

No entanto, se você fizer algo assim:

 var highScore: Int = "Jack"

Você obterá um erro em tempo de compilação informando que não é possível converter o valor do tipo 'String' para o tipo especificado 'Int' .

É porque você declarou highScore para armazenar valor inteiro, mas colocou string nele. Este erro garante que o highScore pode armazenar apenas um número e não o nome do jogador.

Tamanho de um tipo de dados

Outra parte importante de um tipo de dados é seu tamanho. Isso especifica o tamanho dos dados que podem ser armazenados em uma determinada variável ou constante.

O tamanho de um tipo é medido em termos de bits e pode armazenar valores de até 2 bits . Se você não conhece o Bit, pense nele como um valor 0 ou 1.

Portanto, para um tamanho de tipo = 1 bit, ele só pode armazenar até 2 1 = 2, dois valores: 0 ou 1. Portanto, um sistema de 1 bit para um programa de letras pode interpretar 0 como a / 0 e 1 como b / 1.0.

 0 -> a ou 0 1 -> b ou 1

Da mesma forma, um sistema de dois bits pode armazenar até 2 2 = 4 valores: (00,01,10,11) e cada combinação pode ser representada como:

 00 -> a ou 0 01 -> b ou 11 -> c ou 2 10 -> d ou 3

Para um sistema de bits, ele pode armazenar no máximo 2 n valores.

Tipos de dados Swift

Os tipos de dados mais comuns usados ​​em swift estão listados abaixo:

Bool

  • A variável / constante declarada do tipo Bool pode armazenar apenas dois valores trueou false.
  • Valor padrão : falso
  • É freqüentemente usado quando você trabalha com if-elseinstrução. O artigo Swift se mais cobre em detalhes sobre isso.

Exemplo 1: tipo de dados booleano

 let result:Bool = true print(result)

Quando você executa o programa, a saída será:

 verdade

Inteiro

  • A variável / constante declarada do tipo inteiro pode armazenar números inteiros positivos e negativos, incluindo zero, sem componentes fracionários.
  • Valor padrão : 0
  • Tamanho : 32/64 bits depende do tipo de plataforma.
  • Faixa : -2.147.483.648 a 2.147.483.647 (plataforma de 32 bits)
    -9223372036854775808 a 9223372036854775807 (plataforma de 64 bits
  • Existem muitas variantes de Integer type.eg UInt, Int8, Int16etc. O mais comum que você usa é de Int.
  • Se você tem uma exigência para especificar o tamanho / tipo de inteiro uma variável / constante pode segurar, você pode armazená-lo mais especificamente utilizando UInt, Int8, Int16etc, que vamos explorar abaixo.

Exemplo 2: tipo de dados inteiro

 var highScore:Int = 100 print(highScore) highScore = -100 print(highScore) 

Quando você executa o programa, a saída será:

 100 -100 

No exemplo acima, declaramos uma variável highScore do tipo Int. Primeiro, atribuímos a ele um valor de 100, portanto, print(highScore)geramos 100 na tela.

Posteriormente, alteramos o valor para -100 usando o operador de atribuição, highScore = -100assim, print(highScore)gera -100 na tela.

Vamos explorar algumas variantes do Inttipo em Swift.

Int8

  • Variante do tipo inteiro que pode armazenar pequenos números positivos e negativos.
  • Valor padrão : 0
  • Tamanho : 8 bits
  • Faixa : -128 a 127

Um Int8número inteiro pode armazenar 2 8 = (256) valores no total. ou seja, ele pode armazenar números de 0 a 255 certo?

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.

Exemplo 10: Swift é uma linguagem de tipo seguro

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

O código acima criará um erro porque já especificamos que a variável playerName será uma String. Portanto, não podemos armazenar um número inteiro nele.

Artigos interessantes...