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