Swift-Datentypen

Wenn wir in einer beliebigen Programmiersprache programmieren, müssen wir verschiedene Datentypen verwenden, um unterschiedliche Arten von Informationen zu speichern.

Der Datentyp einer Variablen bestimmt, wie die Bits, die diese Werte repräsentieren, im Speicher des Computers gespeichert werden. Sie können beim Deklarieren einer Variablen auch ihren Datentyp angeben.

Alle Variablen haben einen Datentyp, der bestimmt, welche Art von Daten sie speichern können.


Eingebaute Datentypen

Swift bietet einen sehr reichhaltigen Satz von Datentypen. Im Folgenden sind mehrere häufig verwendete Datentypen aufgeführt:

Int

Im Allgemeinen müssen Sie die Länge von Ganzzahlen nicht ausdrücklich angeben. Swift bietet einen speziellen GanzzahltypInt, dessen Länge mit der nativen Wortgröße der aktuellen Plattform übereinstimmt:

  • Auf 32-Bit-Plattformen,IntundInt32ist die Länge dieselbe.
  • Auf 64-Bit-Plattformen,IntundInt64ist die Länge dieselbe.

Wenn Sie keine Ganzzahlen einer bestimmten Länge benötigen, verwenden Sie im AllgemeinenIntist ausreichend. Dies verbessert die Konsistenz und Wiederverwendbarkeit des Codes. Selbst auf einer 32-Bit-Plattform,IntDer Bereich der speicherbaren Ganzzahlen kann erreichen-2,147,483,648~2,147,483,647, was in den meisten Fällen groß genug ist.

UInt

Swift bietet außerdem einen speziellen vorzeichenlosen TypUInt, dessen Länge mit der nativen Wortgröße der aktuellen Plattform übereinstimmt:

  • Auf 32-Bit-Plattformen,UIntundUInt32ist die Länge dieselbe.
  • Auf 64-Bit-Plattformen,UIntundUInt64ist die Länge dieselbe.

Hinweis:Verwenden Sie nach Möglichkeit nichtUInt, es sei denn, Sie müssen wirklich eine vorzeichenlose Ganzzahl mit derselben Größe wie die native Wortlänge der aktuellen Plattform speichern. Außer in diesem Fall ist es am besten,Int, selbst wenn der Wert, den Sie speichern möchten, bekanntermaßen nicht negativ ist. Die konsequente Verwendung vonIntkann die Wiederverwendbarkeit des Codes verbessern, Konvertierungen zwischen verschiedenen Zahlentypen vermeiden und zur Typinferenz von Zahlen passen.

Bei Ganzzahltypen sind folgende Punkte zu beachten:

  • Auf 32-Bit-Systemen haben Int und Int32 dieselbe Länge.

  • Auf 64-Bit-Systemen haben Int und Int64 dieselbe Länge.

  • Auf 32-Bit-Systemen haben UInt und UInt32 die gleiche Länge.

  • Auf 64-Bit-Systemen haben UInt und UInt64 die gleiche Länge.

  • Int8, Int16, Int32 und Int64 repräsentieren jeweils 8-, 16-, 32- und 64-Bit-Formen vorzeichenbehafteter Ganzzahlen.

  • UInt8, UInt16, UInt32 und UInt64 repräsentieren jeweils 8-, 16-, 32- und 64-Bit-Formen vorzeichenloser Ganzzahlen.

Gleitkommazahlen: Float, Double

Gleitkommazahlen sind Zahlen mit einem Nachkommateil, wie zum Beispiel3.14159,0.1und-273.15。

Gleitkommatypen können einen größeren Bereich als Ganzzahltypen darstellen und Zahlen speichern, die größer oder kleiner alsIntder Typ. Swift bietet zwei vorzeichenbehaftete Gleitkommatypen:

  • DoubleRepräsentiert eine 64-Bit-Gleitkommazahl. Verwenden Sie diesen Typ, wenn Sie sehr große oder hochpräzise Gleitkommazahlen speichern müssen.
  • FloatRepräsentiert eine 32-Bit-Gleitkommazahl. Sie können diesen Typ verwenden, wenn keine hohe Präzision erforderlich ist.

Hinweis:
Doublehat eine sehr hohe Präzision mit mindestens 15 Stellen, währendFloathat minimal nur 6 Stellen. Welchen Typ Sie wählen, hängt vom Wertebereich ab, den Ihr Code verarbeiten muss.

Boolescher Wert: Bool

Swift hat einen grundlegenden booleschen Typ namens Bool. Boolesche Werte beziehen sich auf logische Werte, da sie nur true oder false sein können. Swift hat zwei boolesche Konstanten, true und false.

String: String

Ein String ist eine Sammlung von Zeichenfolgen, zum Beispiel:

"Hello, World!"

Character: Character

Ein Zeichen bezieht sich auf einen einzelnen Buchstaben, zum Beispiel:

"C"

Optionaler Typ: Optional

Verwende optionale Typen, um Situationen zu behandeln, in denen ein Wert fehlen kann. Ein optionaler Typ repräsentiert einen Wert oder keinen Wert.

Numerische Bereiche

Die folgende Tabelle zeigt den Speicherplatz für verschiedene Variablentypen sowie die Maximal- und Minimalwerte der Variablentypen:

Type Größe (Bytes) Werbereich
Int8 1 Byte -128 bis 127
UInt8 1 Byte 0 bis 255
Int32 4 Byte -2147483648 bis 2147483647
UInt32 4 Byte 0 bis 4294967295
Int64 8 Bytes -9223372036854775808 bis 9223372036854775807
UInt64 8 Bytes 0 bis 18446744073709551615
Float 4 Byte 1.2E-38 bis 3.4E+38 (~6 Stellen)
Double 8 Bytes 2.3E-308 bis 1.7E+308 (~15 Stellen)

Typaliase

Ein Typalias definiert einen anderen Namen für einen vorhandenen Typ. Typaliase werden mit dem Schlüsselwort typealias definiert. Die Syntax ist wie folgt:

typealias newname = type

Zum Beispiel definiert das Folgende einen Typalias für Int namens Feet:

typealias Feet = Int

Jetzt können wir Variablen mit dem Alias definieren:

import Cocoa

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

Wir verwenden Playground, um das obige Programm auszuführen, und die Ausgabe ist:

100

Typsicherheit

Swift ist eine typsichere Sprache.

Da Swift typsicher ist, führt es beim Kompilieren Ihres Codes Typprüfungen durch und markiert nicht übereinstimmende Typen als Fehler. Dadurch können Fehler früh während der Entwicklung entdeckt und behoben werden.

import Cocoa

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

Das obige Programm meldet einen Fehler in Xcode:

error: cannot assign value of type 'String' to type 'Int'
varA = "This is hello"

Das bedeutet, dass ein String vom Typ 'String' nicht einer 'Int'-Variablen zugewiesen werden kann.


Typinferenz

Wenn Sie mit verschiedenen Arten von Werten umgehen müssen, kann die Typüberprüfung Ihnen helfen, Fehler zu vermeiden. Das bedeutet jedoch nicht, dass Sie jedes Mal explizit den Typ angeben müssen, wenn Sie eine Konstante oder Variable deklarieren.

Wenn Sie den Typ nicht explizit angeben, verwendet Swift die Typinferenz, um einen geeigneten Typ auszuwählen.

Wenn Sie beispielsweise 42 einer neuen Konstante zuweisen, ohne einen Typ anzugeben, kann Swift darauf schließen, dass der Typ der Konstante Int ist, weil der zugewiesene Anfangswert wie eine ganze Zahl aussieht:

let meaningOfLife = 42
// meaningOfLife 会被推测为 Int 类型

Ebenso: Wenn Sie für ein Gleitkommaliteral keinen Typ angeben, leitet Swift ab, dass Sie Double möchten:

let pi = 3.14159
// pi 会被推测为 Double 类型

Beim Ableiten des Typs von Gleitkommazahlen wählt Swift immer Double statt Float.

Wenn in einem Ausdruck sowohl ganze Zahlen als auch Gleitkommazahlen vorkommen, wird er als Typ Double abgeleitet:

let anotherPi = 3 + 0.14159
// anotherPi 会被推测为 Double 类型

Der ursprüngliche Wert 3 hat keine explizite Typdeklaration, und im Ausdruck kommt ein Gleitkommaliteral vor, daher wird der Ausdruck als Typ Double abgeleitet.

Beispiele

import Cocoa

// varA 会被推测为 Int 类型 
var varA = 42
print(varA)

// varB 会被推测为 Double 类型  
var varB = 3.14159
print(varB)

// varC 也会被推测为 Double 类型   
var varC = 3 + 0.14159
print(varC)

Führen Sie den obigen Code aus, die Ausgabe ist:

42
3.14159
3.14159
Andere Erweiterungen