Variabler i Swift er et grunnleggende og kraftig språkkonsept. Selv om de virker enkle, inneholder de mye funksjonalitet, og det er også noen vanlige fallgruver du møter når du gjør Swift programmering.
I denne korte videoopplæringen fra kurset mitt om å skape iOS-programmer med Swift 3, forklarer jeg variabler, konstanter og valgalternativer, med særlig vekt på Swift-typen.
Swift har noen funksjoner som er svært kraftige og hendige når det gjelder variabler. La oss starte med en helt ny lekeplass.
Som du ser, er det allerede en variabel oppgave på skjermen, som ble opprettet av malen. Den har Var
søkeord foran det, etterfulgt av et variabelt navn og oppdraget-her, "Hei, lekeplass"
. Så langt så bra.
Det du ikke ser i denne linjen med kode er en type oppgave. Det er ikke nødvendig. La oss lage en ny variabel som heter int og gi den verdien 8
:
var int = 8
Ok, la oss nå endre str
variabel for å være verdien 4
. Umiddelbart beklager kompilatoren at du prøver å sette en verdi av typen int
å være av typen string
.
Hvordan vet det om dette?
Det er utledet. Til tross for hvordan det ser ut, er Swift et statisk skrevet språk, som betyr at hver variabel har en type. Men i motsetning til de fleste andre språk, kan det utlede typen når det blir tildelt en verdi under definisjon. For vårt tilfelle betyr dette siden str
variabel ble gitt en streng, mottok den automatisk typen string
.
Det samme for int
variabel. Denne vi kan sette til 4
fordi det er et heltall.
Noen ganger vil du eksplisitt spesifisere typen av variabel. Selvfølgelig er dette også mulig. La oss lage en variabel dobbelt
, og sett den til 4
.
Vi vet allerede at det vil bli initialisert til et heltall, til tross for navnet. Så når vi prøver å sette den til 4.5
, dette vil mislykkes. For å være sikker på at det vil være en dobbel likevel, må vi sette det ved å bruke et kolon etter variabelnavnet, etterfulgt av typen, i hovedsak, Dobbelt
.
Ok, nå på konstanter. De er de som skal brukes hvis du ikke vil endre verdien du opprinnelig satt.
Swift-kompilatoren er veldig smart om det og advarer deg om du bruker en variabel der du vil ha en konstant og omvendt. For å definere en konstant, trenger du søkeordet la
i stedet for Var
. I koden fra før, hvis du endrer dobbelt
variabel til en konstant, vil kompilatoren advare deg om endringen du prøver å gjøre i neste linje ved å sette den til 4.5
.
En ting som var veldig morsomt da Swift først kom ut, er at det er fullt Unicode-kompatibelt. Dette betyr også at variable navn kan være et hvilket som helst tegn i Unicode-lignende hvis du vil angi π
til 3,14159
. Den støtter selv å bruke emojis for å nevne variablene og funksjonene.
Den endelige hovedfunksjonen angående variabler i Swift er opsjoner.
Når du definerer en variabel, må du initialisere den før du bruker den. Hvis du ikke gjør det, vil ikke programmet kompilere. Noen ganger vil imidlertid variabelen din ikke alltid ha en verdi. For eksempel, når du har en tilbakeringingsfunksjon som enten returnerer resultatet av en operasjon eller en feil.
Det har alltid vært konseptet med nullpekere i programmering. I Swift kalles de nil. De er initialiserte variabler med en spesiell verdi på ingenting. Hvis du vil tillate en nullverdi for en variabel i Swift, må du eksplisitt si det, og variabelen blir en valgfri. For eksempel:
var myVariable: String? print (myVariable)
En valgfri defineres ved å legge til et spørsmålstegn til typen. Dette gjør umiddelbart utskriftsoppgaven til å fungere, og den gir utganger nil
.
La oss endre min variabel for å være en dobbel, og la oss multiplisere den med 2. Selv om null er tillatt, kan du ikke gjøre mye med det. Dette betyr at vi trenger en trygghet. Siden null sjekker er et svært vanlig problem i programmeringen, har Swift-språkdesignerne besluttet å gi oss en spesiell måte å håndtere det på.
Du har kanskje lært at variabel oppgave i en hvis
erklæring er dårlig praksis. For Swift er dette annerledes. Hvis du gjør det hvis la myVariable = myVariable
, det vil automatisk pakke ut det valgfrie for deg og gjøre det tilgjengelig i If-blokk for deg hvis det ikke er null.
Så la oss initialisere variabelen med en verdi. I blokken vil det multiplisere det med 2 og skrive det ut. Men hvis vi prøver å gjøre det samme utenfor blokken, vil det selvsagt mislykkes.
Hvis du absolutt vet at en variabel har en verdi, og du ikke ønsker å pakke den inn på en betinget måte, kan du også tvinge det ut ved å bruke et utropstegn. Dette vil pakke ut det hvis det er en verdi, men hvis det ikke er det, vil det mislykkes veldig hardt med et runtime unntak. Så hvis du jobber med optionsals mye, husk definitivt denne spesielle hvis
uttalelse.
En veldig viktig ting når det gjelder å jobbe med statisk la
typer er type konvertering.
La oss si at du har en dobbel og vil ha et heltall. I Swift kommer alle typer med en initialiserer, til og med boolesker eller heltall. Standardtypene har også initiativer for kompatible typer, så vi kan bruke int
initialiserer for å konvertere vår dobbelte.
For å videreutvikle typestøping, må jeg introdusere et nytt sett med typer, samlinger. Jeg er ganske sikker på at du vet hva en matrise er, og selvfølgelig er de også tilgjengelig i Swift. La oss lage en rekke heltal:
la intArray = [1, 2, 3, 4]
Du kan være vant til å sette noe som kommer til å tenke i en matrise og også blandingstyper. Men i Swift er også arrays statisk skrevet mot deres verdier. Dette betyr at hvis du vil legge til en streng i din mengde heltal, vet Swift ikke hva han skal gjøre. la intArray = [1, 2, 3, 4, "String"]
vil gi en feilmelding.
Så la oss fjerne strengen og legge den til i en egen linje til matrisen. Nå viser det feilmeldingen jeg ønsket å vise deg.
Denne feilen kommer fra typen av arrayet, siden det er utledet til å være en rekke heltal. Vi kan eksplisitt sette den til denne typen ved å bruke firkantede parenteser rundt innholdstypen. Dette er den mest konsise metoden for å definere array.
Du kan også bruke typen array og bruke vinkelbeslag for å definere typen. Dette kan se bedre ut av deg hvis du kommer fra et annet språk. Selvfølgelig er det noen tilfeller der du faktisk vil tillate blandede typer i en matrise. I et øyeblikk skal jeg vise deg en annen datatype hvor du vil lagre JSON-responsen til en webserver, som kan inneholde tall, booleaner eller strenger.
Det er et spesielt søkeord i Swift som lar disse typene være til stede, og det kalles Noen
. Dette betyr at dette kan være hvilken som helst type. Selvfølgelig er problemet at vi fortsatt er i et statisk skrevet språk. Nå er verdiene av typen Noen
. Hvis vi ønsker å legge til de to første heltallene sammen, slipper det bare å gjøre det fordi Noen
typen støtter ikke tilleggsoperatøren.
Dette betyr at vi må bruke typen avstøpning for å konvertere dem til riktig type. Vi kan bruke som
søkeord for å gjøre det. Og selvfølgelig, siden det ikke er trygt, må vi også bruke banget til å tvinge det, da det ikke er kjent omdanning mellom Noen
og int
. Hvis vi gjør dette, må vi imidlertid være veldig forsiktige med de aktuelle typene. Hvis vi kaster feil element for å være et heltall, vil det mislykkes i kjøretid med unntak.
Nå er det en viktig ting som mangler. Det er ordbøker. Hvis du kommer fra et annet språk, kan du kanskje kjenne dem som kart eller hash.
De har nøkler som har verdier. Hvis du vil definere dem eksplisitt, vil du likne arrayet ved hjelp av firkantede parenteser, men skille nøkkelen og verdien av et kolon.
Definere en string
nøkkel og an Noen
verdi ville være et meget vanlig bruk tilfelle når parsing JSON data fra nettet.
I hele kurset, lag IOS Apps With Swift 3, får du en omfattende guide til bruk av Swift 3 for å lage iOS-apper.
Enten du er ny i iOS app utvikling eller ønsker å skifte bryteren fra Objective-C, vil dette kurset komme i gang med Swift for app-utvikling. Du lærer om alle de grunnleggende funksjonene i språket, fra variabler til klasser. Du får også en introduksjon til bruk av Xcode for app-utvikling som du følger med og implementerer kursprosjektet: En interaktiv Fibonacci-sekvensviser.