Swift 2 lernen

Mit Variablen in Swift arbeiten

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Variablen brauchen Datentypen. Mit der Type Inference verfügt Swift über einen Mechanismus, den Typ einer Variablen selbst zu bestimmen. Der Entwickler darf dieses Verhalten auch präzisieren.
11:39

Transkript

In diesem Video wollen wir uns mit Variablen beschäftigen, die Swift für uns zur Verfügung stellt, und vor allen Dingen mit einem System, was sich da nennt "Type Inference", denn Swift ist klüger, als man denkt. Wir erzeugen uns dazu einen neuen Playground, und wie wär's mit dem Namen "Variablen", und wir bleiben auch hier bei einem Playground für iOS. und legen uns den im System ab, und können dann auch gleich loslegen. Ja, hier haben wir ja schon eine Variable, scheinbar vom Typ String, denn zumindest konnten wir hier diese Zeichenkette speichern. Wie sieht das denn aus mit unseren Variablen? Und dazu gleich ein Hinweis: Dieses Wörtchen "var" kennt man ja unter Umständen auch von anderen Programmiersprachen, und da ist es so ein bisschen, ja, man kann mit diesem Keyword eine Variablen-Deklaration beginnen, man muss es aber nicht, in Swift ist das anders. Das Keyword var muss ich verwenden, um eine Variable zu erzeugen. Also, was haben wir denn: Variable "aktuellerPunktestand" - so. Reicht das schon aus? Nein, das reicht nicht aus, ich muss also dieser Variablen hier zunächst einmal auch einen Wert geben. Sagen wir, wir haben 100 Punkte. Machen wir uns noch eine Variable. Wie wäre es denn mit einer Statusmeldung, und da schreiben wir rein: "alles in Ordnung" So, das ist eine schöne Statusmeldung, dann haben wir noch eine Variable, Äh - "lampeLeuchtet", und dann sagen wir: "true" - ja, sie leuchtet, und dann können wir doch noch sagen, dass wir einen Betrag haben, und dieser Betrag hat jetzt den Wert von 105,3. Also, wir sehen, das scheint alles sehr einfach möglich zu sein, und man könnte ja jetzt der Versuchung unterliegen, dass man sagt, ja - Ist das hier wie in irgendeinem Basic-Dialekt, eine Variable kann alles sein? Ein Integer, ein String, ein Boolean, ein Double, ein Float, oder wie auch immer, und wie passt denn das zusammen, im Jahr 2014 sollte man doch annehmen, dass alles irgendwie, ja - "strikt getyped" ist, also dass auch wirklich eine Sicherheit existiert während der Programmierung, so etwas wie eine Life-Line, so eine - (lacht), so eine Schwimmweste, dass zumindest ich als Entwickler hier nicht irgendwelche Fehler machen kann, indem ich einem Betrag auf einmal einen Text zuweise. Ja, und da ist jetzt tatsächlich es an dem, dass Swift in der Lage ist, aus dem Initialwert, den ich habe, einen Typ abzuleiten. Das heißt, unser aktueller Punktestand ist nach dieser Zuweisung von 100 tatsächlich eine Integer Variable geworden, das heißt, ich darf durchaus dem aktuellen Punktestand jederzeit einen neuen Integer-Wert zuweisen, ja, man muss natürlich dann das Ganze auch noch richtig schreiben (lacht) dann funktioniert das - aber ich darf diesem aktuellen Punktestand natürlich keinen Text zuweisen, denn an der Stelle bleibt unser Playground grau, er kann es nicht ausführen, und wir haben hier einen Fehler, Aha: "Type 'Int' does Not conform to protocol 'StringLiteralConvertible" - hm, will uns auf umständliche Art und Weise hier zu verstehen geben, dass das eben ein Int ist, und da kann ich nicht einfach einen Text zuweisen, das heißt, es ist sehr wohl alles getypt, und getyped, wenn wir so wollen, und auch typsicher. Das ist ganz ganz wichtig. Nun, was bedeutet das denn? Muss ich mich dann darauf verlassen, und vor allen Dingen, was ist denn, wenn ich eine Variable mache, wo ich aber noch den Wert gar nicht kenne, zu dem Zeitpunkt, wo ich die Variable deklariere, kann ja sein, dass ich mir das erst aus einer Datenbank holen muss, oder von einem Server erfahren muss, diesen Wert, also, wie kann ich denn dann Variablen machen, oder wie kann ich dieses "Type Inferring" denn hier ein bisschen übersteuern? Na ja, weil ich als Entwickler hab' doch absolut den Überblick, und dann muss ich mich nicht immer auf den Compiler hier verlassen. Natürlich darf ich also hergehen, und sagen, ich habe eine Variable, das soll jetzt eine Farbe sein, und diese Farbe kann ich dann schon mal anlegen als "Typ String". Nur um das zu zeigen, wenn wir das nicht machen, und ich sage, ich hätte gerne eine Variable Farbe, dann kann unser System damit nichts anfangen. Der Playground bleibt grau, er kriegt damit nichts auf die Reihe, es kann auch sein, dass hier so ein Hinweis erscheint, ja, hm -, was soll denn Farbe sein, mir fehlt ein Typ. Geben wir einen Typ an, und sagen, Farbe ist ein String, dann darf ich natürlich jederzeit später sagen, das ist die Farbe Rot, und dann ist es eben in Ordnung, Ich darf dann später aber eben nicht sagen, Farbe gleich 100, weil 100 ist nun mal kein String, und wir sehen's, der Playground bleibt grau, auch wenn jetzt hier nicht zwingend ein Fehler auftaucht, aber so kann der Text hier nicht übersetzt werden. also, Farbe ist dann ein String. Und so darf ich natürlich mir alle möglichen Variablen deklarieren, dass ich auch unter Umständen Subtypen habe, denn wenn wir hier sagen, das ist ein Int, das ist ein String, das ist ein Bool, wo nur true oder false möglich ist, übrigens hier für die, die von Objective-C kommen, früher yes/no, jetzt in Swift wieder true/false, und auch hier ein schöner Hinweis, für diejenigen, die aus der Objective-C Welt kommen, ja, in SWIFT brauchen wir kein führendes @-Zeichen mehr für die Strings, und trotzdem ist unser String ein tolles Objekt. Ja, ein Boolean oder ein Double, das kann man auch unter Umständen auch feiner noch angeben, Ich darf also hier sagen, ich habe hier einen kleinen Wert, und da kann ich jetzt aus der Palette wählen, dass ich sage, das ist ein Integer, der ist eben standardmäßig 64-bit auf 64-bit Systemen, das heißt, ab iPhone 5s ist es dann auch ein 64-bit Integer, tatsächlich auf iPhone 4 und 5, die nicht 64-bit CPU's haben, gilt dann ein Int auch als 32-bit Int, also da muss man unter Umständen ein bisschen drauf achten, aber wir haben nun mal diesen CPU-Sprung, diesen Leistungssprung von 32 auf 64 Bit im Moment, Apple empfiehlt ganz klar, wenn ein ganzzahliger Wert zu verwenden ist, nehmt Int. Dennoch darf ich wählen, nur den 16-bit, den 32-bit, die 64-bit oder auch die 8-bit Variante, die man hier eben dann auch tatsächlich heraussuchen kann, um zu sagen, hier darf ich eben Werte von 0 bis 255 verarbeiten, Und wir sehen natürlich hier, dass der Compiler wahnsinnig clever ist, denn wenn ich einen Integer habe, dann ist er ja nicht vorzeichenlos, das heißt, ich habe hier Werte von minus 127 bis plus irgendwie 127, oder so zur Verfügung, will ich tatsächlich von 0 bis 255 gehen, dann muss ich eben einen Unsigned Integer wählen, das ist der vorzeichenlose, und wenn ich dem einen größeren Wert zuweisen will, als er speichern kann, dann ist Swift so sauber getyped, wenn wir diesen Begriff hier prägen wollen, dass der Compiler uns hier schon einen auf die Finger haut, denn 2500, diesen Wert kann ich in 8-bit nun einmal nicht speichern. Also, wir dürfen selbstverständlich uns aus einer breiten Palette von Integers und Unsigned Integers einen Wert aussuchen, Apple sagt aber, nehmt Int, wie gesagt, 32- und 64-bit Problematik zwischen iPhone 4/5 und 5s und den moderneren Plattformen, da muss man dann unter Umständen doch einmal darauf achten. Genauso darf ich auch einen Endbetrag machen, der eben ein Double ist, der den Wert 2,5 beträgt, ich darf aber auch sagen, es wäre ein Float. Gebe ich keinen Datentyp an, dann wird eben diese 2,5 automatisch zu einem Double. Das ist also dann tatsächlich so, und wenn wir eine Variable haben fahrzeugInBetrieb, und wir wollen das als Bool haben, dann dürfen wir das auch gerne schreiben, aber letztendlich haben wir dann doch genau diesen Effekt, wo uns String ein wenig Arbeit abnehmen will, Wenn wir nämlich solche initialisierte Werte haben, dann ist das doch ganz klar ein String. Dann darf ich mich auch wirklich auf die Type Inference verlassen, und sagen, ich muss den Typ nicht angeben, Hier, fahrzeugInBetrieb, das kann ja nur sein true oder false, es ist also ein Boolean, dann kann ich mir auch sparen, das zu schreiben, das sind standardmäßig Doubles, die muss ich nicht angeben, und 250 ist ein klassischer Int, dann muss ich auch hier das nicht angeben. Also, Type inference - eine wirklich tolle Sache, und Variablen in Swift erzeugt man eben mit dem Schlüsselwort var, und ganz formal ist es eben an dem, dass wir eine Variable haben, dann den Variablen-Namen, auch hier bietet es sich an, CamelCase zu verwenden, das heißt hier, neue Wörter werden immer mit einem Großbuchstaben markiert, Doppelpunkt Typ, und dann optional eine Initialisierung, denn in Swift werden Variablen nicht per default initialisiert, also es liegt hier an uns als Entwickler, für einen standardisierten Vorgabewert auch zu sorgen. Das zum Thema Variablen und Type inference mit Swift.

Swift 2 lernen

Erkunden Sie die wichtigsten Sprachmerkmale von Swift und ihre modernen Eigenschaften wie Generics, Extensions, Tupels und Optionals.

4 Std. 2 min (30 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!