Snabba datatyper (med exempel)

I den här handledningen lär du dig om olika datatyper som Swift-programmeringsspråk stöder och använder det medan du skapar en variabel eller en konstant.

En datatyp är den typ av data (värde) som en variabel eller konstant kan lagra i den. I artikeln Swift Variables and Constants skapade du till exempel en variabel och en konstant för att lagra strängdata i minnet.

Dessa data kan vara en text / sträng ("Hello") eller ett nummer (12.45) eller bara bitar (0 & 1). Definition av datatyp säkerställer att endast den definierade datatypen lagras.

Låt oss titta på ett scenario:

Antag att du vill skapa ett spel. Eftersom de flesta spel visar hög poäng och spelarens namn efter att spelet är klart måste du lagra dessa två data för ditt spel.

Den höga poängen är ett tal (t.ex. 59) och spelarens namn en sträng (t.ex. Jack). Du kan skapa två variabler eller konstanter för att lagra data.

I Swift kan detta göras genom att deklarera variabler och datatypen som:

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

Här förklarade vi highScore-variabel av typen Intsom lagrar värde 59. Och playerName-variabel av typen Stringsom lagrar värde Jack.

Men om du gör något så här:

 var highScore: Int = "Jack"

Du får ett kompileringsfel om att det inte går att konvertera värdet av typen 'String' till den angivna typen 'Int' .

Det beror på att du deklarerade highScore för att lagra heltal men placerade sträng i det. Detta fel säkerställer att highScore endast kan lagra ett nummer och inte spelarens namn.

Storlek på en datatyp

En annan viktig del av en datatyp är dess storlek. Detta specificerar storleken på data som kan lagras i en viss variabel eller konstant.

En typs storlek mäts i termer av bit och kan lagra värden upp till 2 bitar . Om du inte känner till Bit, tänk på det som ett värde som antingen är 0 eller 1.

För en typstorlek = 1 bit kan den bara lagra upp till, 2 1 = 2, två värden: antingen 0 eller 1. Så ett 1-bitars system för ett bokstavsprogram kan tolka 0 som a / 0 och 1 som b / 1.0.

 0 -> a eller 0 1 -> b eller 1

På samma sätt kan ett tvåbitarsystem lagra upp till 2 2 = 4 värden: (00,01,10,11) och varje kombination kan representeras som:

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

För ett bitsystem kan det lagra högst 2 n värden i det.

Snabba datatyper

De vanligaste datatyperna som används i snabb listas nedan:

Bool

  • Variabel / konstant deklarerad av Bool-typ kan bara lagra två värden antingen trueeller false.
  • Standardvärde : falskt
  • Det används ofta när du arbetar med if-elseuttalande. Snabb om annars artikeln täcker i detalj om det.

Exempel 1: Boolesk datatyp

 let result:Bool = true print(result)

När du kör programmet blir resultatet:

 Sann

Heltal

  • Variabel / konstant deklarerad av heltalstyp kan lagra heltal både positiva och negativa inklusive noll utan bråkdelar.
  • Standardvärde : 0
  • Storlek : 32/64 bit beror på plattformstypen.
  • Område : -2,147,483,648 till 2,147,483,647 (32 bitars plattform)
    -9223372036854775808 till 9223372036854775807 (64 bitars plattform
  • Det finns många varianter av Integer type.eg UInt, Int8, Int16etc. Den vanligaste du använder är av Int.
  • Om du har ett krav på att ange storleken / typ av heltal en variabel / konstant kan hålla, kan du lagra det mer specifikt med hjälp av UInt, Int8, Int16etc. som vi kommer att undersöka nedan.

Exempel 2: Heltalsdatatyp

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

När du kör programmet blir resultatet:

 100-100 

I exemplet ovan förklarade vi en variabel highScore av typen Int. Först tilldelade vi det med ett värde på 100 så print(highScore)matar ut 100 på skärmen.

Senare ändrade vi värdet till -100 med hjälp av tilldelningsoperatören som highScore = -100så, print(highScore)matar ut -100 på skärmen.

Låt oss utforska några varianter av Inttypen i Swift.

Int8

  • Variant av heltalstyp som kan lagra både positiva och negativa små siffror.
  • Standardvärde : 0
  • Storlek : 8 bitar
  • Räckvidd : -128 till 127

Ett Int8heltal kan lagra totalt 2 8 = (256) värden i det. dvs det kan lagra nummer från 0 till 255 eller hur?

Ja, du har rätt. Men eftersom, Int8inkluderar både positiva och negativa tal kan vi lagra nummer från -128 till 127 inklusive 0 som uppgår till 256 värden eller siffror.

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

Du kan också ta reda på det högsta och lägsta värdet som en typ kan lagra med .minoch .maxinbyggda Swift-funktioner.

Exempel 3: Datatyp Max och Min Int8

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

När du kör programmet blir resultatet:

 -128 127

UInt

  • Variant av heltalstyp som heter UInt (osignerat heltal) som endast kan lagra osignerade nummer (positiva eller noll).
  • Standardvärde : 0
  • Storlek : 32/64 bit beror på plattformstypen.
  • Område : 0 till 4294967295 (32 bitars plattform)
    0 till 18446744073709551615 (64 bitars plattform)

Exempel 4: UInt-datatyp

 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.

Exempel 10: Swift är ett typsäkert språk

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

Ovanstående kod skapar ett fel eftersom vi redan har angett att variabel playerName kommer att vara en sträng. Så vi kan inte lagra ett heltal i det.

Intressanta artiklar...