Swift Typy danych (z przykładami)

W tym samouczku dowiesz się o różnych typach danych obsługiwanych przez język programowania Swift i jak z nich korzystać podczas tworzenia zmiennej lub stałej.

Typ danych to typ danych (wartość), które może przechowywać zmienna lub stała. Na przykład w artykule Zmienne i stałe Swift utworzono zmienną i stałą do przechowywania danych w postaci ciągów znaków w pamięci.

Te dane mogą być tekstem / ciągiem znaków („Hello”), liczbą (12,45) lub po prostu bitami (0 i 1). Zdefiniowanie typu danych zapewnia przechowywanie tylko określonego typu danych.

Spójrzmy na scenariusz:

Załóżmy, że chcesz stworzyć grę. Ponieważ większość gier wyświetla wysoki wynik i imię gracza po zakończeniu gry, musisz zachować te dwa dane dla swojej gry.

Najlepszy wynik to liczba (np. 59), a nazwa gracza to string (np. Jack). Możesz utworzyć dwie zmienne lub stałe do przechowywania danych.

W Swift można to zrobić, deklarując zmienne i typ danych jako:

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

Tutaj zadeklarowaliśmy zmienną typu highScore, Intktóra przechowuje wartość 59. Oraz zmienną playerName typu, Stringktóra przechowuje wartość Jacka.

Jeśli jednak zrobisz coś takiego:

 var highScore: Int = "Jack"

Pojawi się błąd czasu kompilacji informujący, że nie można przekonwertować wartości typu „String” na określony typ „Int” .

Dzieje się tak, ponieważ zadeklarowałeś highScore, aby przechowywać wartość całkowitą, ale umieściłeś w niej ciąg. Ten błąd zapewnia, że ​​highScore może przechowywać tylko numer, a nie nazwę gracza.

Rozmiar typu danych

Inną ważną częścią typu danych jest ich rozmiar. Określa rozmiar danych, które mogą być przechowywane w danej zmiennej lub stałej.

A typowania wielkość mierzy się bitów i może przechowywać wartości zapisu do 2 bitów . Jeśli nie wiesz o Bicie, pomyśl o nim jako o wartości równej 0 lub 1.

Tak więc, dla rozmiaru Type = 1 bit, może on przechowywać tylko do 2 1 = 2, dwie wartości: 0 lub 1. Tak więc system 1-bitowy dla programu literowego może interpretować 0 jako a / 0 i 1 jako b / 1.0.

 0 -> a lub 0 1 -> b lub 1

Podobnie, system dwubitowy może przechowywać do 2 2 = 4 wartości: (00,01,10,11), a każdą kombinację można przedstawić jako:

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

W przypadku systemu bitowego może przechowywać w nim maksymalnie 2 n wartości.

Szybkie typy danych

Poniżej wymieniono najpopularniejsze typy danych używane w Swift:

Bool

  • Zmienna / Stała oświadczył typu Bool może przechowywać tylko dwie wartości albo truealbo false.
  • Wartość domyślna : false
  • Jest często używany podczas pracy z if-elseinstrukcją. Swift if else artykuł szczegółowo na ten temat.

Przykład 1: Boolean typ danych

 let result:Bool = true print(result)

Po uruchomieniu programu wynik będzie następujący:

 prawdziwe

Liczba całkowita

  • Zmienna / stała zadeklarowana jako typ całkowity może przechowywać liczby całkowite zarówno dodatnie, jak i ujemne, w tym zero bez składników ułamkowych.
  • Wartość domyślna : 0
  • Rozmiar : 32/64 bity w zależności od typu platformy.
  • Zakres : od -2 147 483 648 do 2147 483 647 (platforma 32-bitowa)
    -9223372036854775808 do 9223372036854775807 (platforma 64-bitowa
  • Istnieje wiele wariantów Integer type.eg UInt, Int8, Int16itd. Najczęstszym z nich korzystać jest Int.
  • Jeśli masz wymóg, aby określić rozmiar / rodzaj całkowitą zmienna / stała można trzymać, można przechowywać go bardziej szczegółowo za pomocą UInt, Int8, Int16itd., Które mamy zamiar zbadać poniżej.

Przykład 2: typ danych Integer

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

Po uruchomieniu programu wynik będzie następujący:

 100-100 

W powyższym przykładzie zadeklarowaliśmy zmienną typu highScore Int. Najpierw przypisaliśmy mu wartość 100, więc print(highScore)na ekranie pojawia się 100.

Później zmieniliśmy wartość -100 za pomocą operatora przypisania, jak highScore = -100tak, print(highScore)wyjść -100 na ekranie.

Przyjrzyjmy się kilku wariantom tekstu Intw języku Swift.

Int8

  • Wariant typu Integer, który może przechowywać zarówno dodatnie, jak i ujemne małe liczby.
  • Wartość domyślna : 0
  • Rozmiar : 8 bitów
  • Zakres : od -128 do 127

Liczba Int8całkowita może przechowywać łącznie 2 8 = (256) wartości. tj. może przechowywać liczby od 0 do 255, prawda?

Tak, masz rację. Ale ponieważ Int8zawiera zarówno liczby dodatnie, jak i ujemne, możemy przechowywać liczby od -128 do 127, w tym 0, które daje łącznie 256 wartości lub liczb.

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

Możesz również znaleźć najwyższą i najniższą wartość, jaką typ może przechowywać, używając .mini .maxwbudowanych funkcji języka Swift.

Przykład 3: Typ danych Max i Min Int8

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

Po uruchomieniu programu wynik będzie następujący:

 -128 127,

UInt

  • Wariant typu Integer o nazwie UInt (liczba całkowita bez znaku), który może przechowywać tylko liczby bez znaku (dodatnie lub zero).
  • Wartość domyślna : 0
  • Rozmiar : 32/64 bity w zależności od typu platformy.
  • Zakres : 0 do 4294967295 (platforma 32-bitowa)
    0 do 18446744073709551615 (platforma 64-bitowa)

Przykład 4: typ danych UInt

 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.

Przykład 10: Swift jest językiem bezpiecznym dla typów

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

Powyższy kod utworzy błąd, ponieważ już określiliśmy, że zmienna nazwa gracza będzie ciągiem. Nie możemy więc przechowywać w nim liczby całkowitej.

Interesujące artykuły...