I den første artikkelen fra Swift From Scratch lærte du om Xcode lekeplasser og skrev dine første linjer med Swift. I denne artikkelen vil vi begynne å lære grunnleggende av Swift programmeringsspråket ved å utforske variabler og skrive. Vi vil også ta en nærmere titt på konstanter og hvorfor du oppfordres til å bruke dem så mye som mulig.
I de neste delene av denne serien skal vi bruke Xcode-lekeplasser for å lære grunnleggende av Swift programmeringsspråket. Som vi så i forrige artikkel, er lekeplasser ideelle for undervisning og læring Swift.
La oss starte med å skape en ny lekeplass for denne opplæringen. Jeg oppfordrer deg til å følge med! Å bruke et språk er en fin måte å lære sin syntaks på og forstå konseptene sine.
Start Xcode 8 og opprett en ny lekeplass ved å velge Ny> Lekeplass ... fra Xcode er Fil Meny. Skriv inn et navn på lekeplassen, sett Plattform til iOS, og klikk neste. Fortell Xcode hvor du vil lagre lekeplassen og trykke Skape.
Fjern innholdet på lekeplassen slik at vi kan starte med en ren skifer. Vi har allerede brukt variabler i den forrige opplæringen, men la oss se nærmere på de nitty-gritty detaljene for å bedre forstå hva Swift gjør bak kulissene.
I Swift bruker vi Var
søkeord for å erklære en variabel. Selv om dette ligner på variabler er deklarert i andre programmeringsspråk, anbefaler jeg sterkt at du ikke tenker på andre programmeringsspråk når du bruker Var
søkeord i Swift. Det er noen viktige forskjeller.
De Var
Søkeord er den eneste måten å erklære en variabel i Swift. Den vanligste og konsekvente bruken av Var
Søkeordet er å erklære en variabel og tildele en verdi til den.
var street = "5th Avenue"
Husk at vi ikke slutter denne koden med en semikolon. Mens et semikolon er valgfritt i Swift, er det ikke best å bruke semikolon hvis det ikke er nødvendig.
Du har også kanskje lagt merke til at vi ikke angav en type når du erklærer variabelen gate
. Dette bringer oss til en av Swifts hovedtrekk, skriv innferd.
Ovennevnte setning erklærer en variabel gate
og tildeler verdien 5th Avenue
til det. Hvis du er ny til Swift eller du er vant til JavaScript eller PHP, kan du tenke at Swift er et typløst eller løst skrevet språk, men ingenting kan være lenger fra sannheten. La meg gjenta at Swift er et sterkt skrevet språk. Skriv sikkerhet er en av hjørnesteinene til språket.
Vi har nettopp kommet i gang, og Swift viser oss allerede litt av sin magi. Selv om ovennevnte setning ikke spesifiserer eksplisitt en type, variabelen gate
er av typen string
. Dette er Swifts type inferanse i aksjon. Verdien vi tilordner gate
er en streng. Swift er smart nok til å se det og implisitt setter typen av gate
til string
.
Følgende erklæring gir oss det samme resultatet. Forskjellen er at vi eksplisitt angir typen av variabelen. Denne uttalelsen sier det bokstavelig talt gate
er av type string
.
var gate: String = "5th Avenue"
Swift krever at du eksplisitt eller implisitt angir typen variabler og konstanter. Hvis du ikke gjør det, klager Swift ved å kaste en feil. Legg til følgende linje på lekeplassen din for å se hva jeg mener.
var nummer
Denne uttalelsen ville være helt gyldig i JavaScript eller PHP. I Swift er det imidlertid ugyldig. Årsaken er enkel. Selv om vi erklærer en variabel ved bruk av Var
søkeord, vi angir ikke variabeltypen. Swift kan ikke avlede typen, siden vi ikke tilordner en verdi til variabelen. Hvis du klikker feilen, forteller Xcode deg hva som er galt med denne utsagnet.
Vi kan enkelt fikse dette problemet ved å gjøre en av to ting. Vi kan tildele en verdi til variabelen som vi gjorde tidligere, eller vi kan eksplisitt spesifisere en type for variabelen Nummer
. Når vi eksplisitt angir typen av Nummer
, feilen forsvinner. Koden nedenfor viser dette Nummer
er av typen string
.
Var nummer: String
Som du ser nedenfor, tilordner du nye verdier til gate
og Nummer
er enkelt og kommer uten overraskelser.
var street: String = "5th Avenue" var nummer: String street = "Main Street" number = "10"
Ville det ikke være enklere å tildele nummeret 10
til Nummer
variabel? Det er ikke nødvendig å lagre gatenummeret som en streng. La oss se hva som skjer hvis vi gjør det.
var street: String = "5th Avenue" var nummer: String street = "Main Street" nummer = 10
Hvis vi tilordner et heltall til Nummer
, Xcode kaster en annen feil hos oss. Feilmeldingen er klar. Vi kan ikke tildele en verdi av typen int
til en variabel av typen string
. Dette er ikke et problem i løst skrevet språk, men det er i Swift.
Swift er et sterkt skrevet språk hvor hver variabel har en bestemt type, og den typen kan ikke endres. Les denne setningen igjen for å la den synke inn fordi dette er et viktig konsept i Swift.
For å kvitte seg med feilen, må vi erklære Nummer
variabel som en int
. Ta en titt på det oppdaterte eksemplet nedenfor.
var gate: String = "5th Avenue" var nummer: Int street = "Main Street" nummer = 10
Det er viktig at du holder følgende i bakhodet. Du kan erklære en variabel med Var
søkeord, og du trenger ikke å eksplisitt erklære variablettens type. Men husk at hver variabel og konstant-har en type i Swift. Hvis Swift ikke kan avlede typen, klager den. Hver variabel har en type, og den typen kan ikke endres.
Konstanter ligner variabler i form av typing. Den eneste forskjellen er at verdien av en konstant ikke kan endres når den har en verdi. Verdien av en konstant er, vel ... konstant.
For å erklære en konstant bruker du la
søkeord. Ta en titt på følgende eksempel som vi erklærer gate
som en konstant i stedet for en variabel.
la street: String = "5th Avenue" var nummer: Int street = "Main Street" nummer = 10
Hvis vi bare oppdaterer den første linjen, erstatter Var
med la
, Xcode kaster en feil av åpenbare grunner. Forsøk å endre verdien av en konstant er ikke tillatt i Swift. Fjern eller kommentere linjen der vi prøver å tildele en ny verdi til gate
for å kvitte seg med feilen.
la street: String = "5th Avenue" var nummer: Int // street = "Main Street" nummer = 10
Jeg håper du er enig i at erklære konstanter er veldig enkelt i Swift. Det er ikke behov for eksotiske søkeord eller en kompleks syntaks. Deklarasjonskonstanter er like enkelt som deklarerer variabler, og det er ingen tilfeldighet.
Bruk av konstanter oppfordres i Swift. Hvis en verdi ikke kommer til å endres, eller du ikke forventer at den endres, bør den være en konstant. Dette har en rekke fordeler. En av fordelene er ytelse, men en viktigere fordel er sikkerheten. Ved å bruke konstanter når det er mulig, legger du til begrensninger i koden din, noe som resulterer i sikrere kode.
De fleste programmeringsspråk har et bredt spekter av typer for lagring av strenger, heltal, flyter, etc. Listen over tilgjengelige typer i Swift er kortfattet. Ta en titt på følgende liste:
int
Flyte
Dobbelt
string
Karakter
bool
Det er viktig å forstå at ovennevnte typer ikke er grunnleggende eller primitive typer. De er navngitte typer, som implementeres av Swift ved hjelp av strukturer. Vi undersøker strukturer mer detaljert senere i denne serien, men det er godt å vite at typene vi opplevde hittil ikke er de samme som de primitive typer du kanskje har brukt i, for eksempel Objective-C.
Det finnes mange flere datatyper i Swift, for eksempel tuples, arrayer og ordbøker. Vi undersøker dem senere i denne serien.
Det er et annet tema vi må diskutere, type konvertering. Ta en titt på følgende Objective-C-utdrag. Denne kodeblokken gir verdien verdien 314.000000
til konsollen.
int a = 100; flyte b = 3,14; NSLog (@ "% f", (a * b));
Objective-C-kjøretiden konverterer implisitt en
til en flytende verdi og multipliserer den med b
. La oss omskrive den ovennevnte kodebiten ved hjelp av Swift.
var a = 100 var b = 3,14 print (a * b)
Ignorer print (_: separator: terminator :)
funksjon for nå. Jeg vil først fokusere på multiplikasjon av en
og b
. Swift infers typen av en
, en int
, og b
, en Dobbelt
. Men når kompilatoren forsøker å formere seg en
og b
, det merker at de ikke er av samme type. Dette kan ikke virke som et problem for deg, men det er for Swift. Swift vet ikke hvilken type resultatet av denne multiplikasjonen skal være. Skal det være et heltall eller en dobbel?
For å fikse dette problemet må vi sørge for at begge operandene til multiplikasjonen er av samme type. Swift implisitt ikke konverterer operandene til oss, men det er lett å gjøre det. I det oppdaterte eksempelet nedenfor lager vi en Dobbelt
bruker verdien som er lagret i en
. Dette løser feilen.
var a = 100 var b = 3,14 print (Dobbel (a) * b)
Merk at typen av en
har ikke endret seg. Selv om kodestykket ovenfor kan se ut som en type avstøpning, er det ikke det samme. Vi bruk verdien som er lagret i en
å lage en Dobbelt
, og det resultatet blir brukt i multiplikasjonen med b
. Resultatet av multiplikasjonen er av type Dobbelt
.
Det du trenger å huske er at Swift er forskjellig fra C og Objective-C. Det omdirigerer ikke implisitt verdier av variabler og konstanter. Dette er et annet viktig konsept å forstå.
I den forrige kodestykket påkalte du din første funksjon, print (_: separator: terminator :)
. Denne funksjonen er lik Objective-C NSLog
; den skriver ut noe og legger til en ny linje. For å skrive ut noe til konsollen eller resultatpanelet til høyre, påkaller du print (_: separator: terminator :)
og send det til en parameter. Det kan være en variabel, en konstant, et uttrykk eller en bokstavelig. Ta en titt på følgende eksempler.
var streng = "dette er en streng" la konstant = 3,14 utskrift (streng) utskrift (konstant) utskrift (10 * 50) utskrift ("streng bokstavelig")
Det er også mulig å bruke strenginterpolering for å kombinere variabler, konstanter, uttrykk og bokstaver. Strenginterpolering er veldig lett i Swift. Vri variablene, konstantene, uttrykkene eller bokstavene i \ ()
. Lett som kake.
la street = "5th Avenue" la nummer = 10 skriv ut ("Hun bor på \ (gate) \ (tall).")
Det er viktig at du forstår hvordan Swift håndterer variabler og konstanter. Selv om det kan ta litt tid å venne seg til konseptet med konstanter, når du har tatt imot denne beste praksisen, vil koden din bli mye tryggere og lettere å forstå. I neste veiledning av denne serien fortsetter vi utforskningen av Swift ved å se på samlinger.
Vi har bygget en komplett guide for å hjelpe deg med å lære Swift, enten du er bare i gang med det grunnleggende eller du vil utforske mer avanserte emner.
Hvis du vil lære hvordan du bruker Swift 3 til å kode sanntidsprogrammer, sjekk ut kurset ditt Opprett IOS Apps With Swift 3. Enten du er ny i iOS app-utvikling eller ønsker å skifte bryteren fra Objective-C, dette kurset vil komme i gang med Swift for app utvikling.