Swift - typy danych

Podczas programowania w dowolnym języku programowania musisz używać różnych typów zmiennych do przechowywania informacji. Zmienne to nic innego jak zarezerwowane miejsca w pamięci do przechowywania wartości. Oznacza to, że kiedy tworzysz zmienną, rezerwujesz trochę miejsca w pamięci.

Możesz chcieć przechowywać informacje o różnych typach danych, takich jak łańcuchy, znaki, znaki szerokie, liczby całkowite, zmiennoprzecinkowe, logiczne itp. Na podstawie typu danych zmiennej system operacyjny przydziela pamięć i decyduje, co może być przechowywane w zarezerwowanym pamięć.

Wbudowane typy danych

Swift 4 oferuje programiście bogaty asortyment wbudowanych oraz zdefiniowanych przez użytkownika typów danych. Następujące typy podstawowych typów danych występują najczęściej podczas deklarowania zmiennych -

  • Int or UInt- To jest używane dla liczb całkowitych. W szczególności można użyć Int32, Int64 do zdefiniowania 32- lub 64-bitowej liczby całkowitej ze znakiem, natomiast UInt32 lub UInt64 do zdefiniowania 32- lub 64-bitowych zmiennych całkowitych bez znaku. Na przykład 42 i -23.

  • Float- Służy do reprezentowania 32-bitowej liczby zmiennoprzecinkowej i liczb z mniejszymi miejscami dziesiętnymi. Na przykład 3,14159, 0,1 i -273,158.

  • Double- Służy do reprezentowania 64-bitowej liczby zmiennoprzecinkowej i jest używany, gdy wartości zmiennoprzecinkowe muszą być bardzo duże. Na przykład 3,14159, 0,1 i -273,158.

  • Bool - reprezentuje wartość logiczną, która jest prawdą lub fałszem.

  • String- To jest uporządkowany zbiór znaków. Na przykład „Hello, World!”

  • Character- To jest jednoznakowy literał ciągu. Na przykład „C”

  • Optional - reprezentuje zmienną, która może zawierać wartość lub nie zawierać żadnej wartości.

  • Tuples - Służy do grupowania wielu wartości w pojedynczą wartość złożoną.

Wymieniliśmy tutaj kilka ważnych punktów związanych z typami całkowitymi -

  • Na platformie 32-bitowej Int ma taki sam rozmiar jak Int32.

  • Na platformie 64-bitowej Int ma taki sam rozmiar jak Int64.

  • Na platformie 32-bitowej UInt ma taki sam rozmiar jak UInt32.

  • Na platformie 64-bitowej UInt ma taki sam rozmiar jak UInt64.

  • Int8, Int16, Int32, Int64 mogą służyć do reprezentowania 8-bitowych, 16-bitowych, 32-bitowych i 64-bitowych postaci liczb całkowitych ze znakiem.

  • UInt8, UInt16, UInt32 i UInt64 mogą być używane do reprezentowania 8-bitowych, 16-bitowych, 32-bitowych i 64-bitowych postaci liczb całkowitych bez znaku.

Wartości powiązane

Poniższa tabela przedstawia typ zmiennej, ile pamięci zajmuje przechowywanie wartości w pamięci oraz jaka jest maksymalna i minimalna wartość jaka może być przechowywana w tego typu zmiennych.

Rodzaj Typowa szerokość bitu Typowy zakres
Int8 1 bajt -127 do 127
UInt8 1 bajt Od 0 do 255
Int32 4 bajty Od -2147483648 do 2147483647
UInt32 4 bajty 0 do 4294967295
Int64 8 bajtów -9223372036854775808 do 9223372036854775807
UInt64 8 bajtów 0 do 18446744073709551615
Pływak 4 bajty 1,2E-38 do 3,4E + 38 (~ 6 cyfr)
Podwójnie 8 bajtów 2,3E-308 do 1,7E + 308 (~ 15 cyfr)

Wpisz Aliasy

Możesz utworzyć nową nazwę dla istniejącego typu za pomocą typealias. Oto prosta składnia definiowania nowego typu przy użyciu aliasów typu -

typealias newname = type

Na przykład poniższy wiersz instruuje kompilator, że Feet to inna nazwa Int -

typealias Feet = Int

Teraz poniższa deklaracja jest całkowicie poprawna i tworzy zmienną całkowitą o nazwie odległość -

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

Gdy uruchomimy powyższy program przy użyciu placu zabaw, otrzymamy następujący wynik.

100

Bezpieczeństwo typów

Swift 4 jest językiem bezpiecznym dla typów, co oznacza, że ​​jeśli część twojego kodu oczekuje String, nie możesz przez pomyłkę przekazać Int.

Ponieważ Swift 4 jest bezpieczny dla typów, sprawdza typy podczas kompilowania kodu i oznacza wszelkie niezgodne typy jako błędy.

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

Kiedy kompilujemy powyższy program, generuje on następujący błąd czasu kompilacji.

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

Wnioskowanie o typie

Wnioskowanie o typie umożliwia kompilatorowi automatyczne wywnioskowanie typu określonego wyrażenia podczas kompilowania kodu, po prostu sprawdzając podane wartości. Swift 4 używa wnioskowania o typie, aby opracować odpowiedni typ w następujący sposób.

// 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)

Gdy uruchomimy powyższy program za pomocą placu zabaw, otrzymamy następujący wynik -

42
3.14159
3.14159