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 nicht
UInt, 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.14159Andere Erweiterungen