I den första artikeln Swift From Scratch lärde du dig om Xcode-lekplatser och skrev dina första rader Swift. I den här artikeln börjar vi lära känna grunden för Swift-programmeringsspråket genom att utforska variabler och skriva. Vi ska också titta på konstanter och varför du uppmanas att använda dem så mycket som möjligt.
I nästa del av denna serie kommer vi att använda sig av Xcode-lekplatser för att lära känna grunden för Swift-programmeringsspråket. Som vi såg i föregående artikel är lekplatser idealiska för undervisning och lärande Swift.
Låt oss börja med att skapa en ny lekplats för denna handledning. Jag uppmuntrar dig att följa med! Att använda ett språk är ett bra sätt att lära sig sin syntax och förstå dess begrepp.
Starta Xcode 8 och skapa en ny lekplats genom att välja Ny> Lekplats ... från Xcode s Fil meny. Ange ett namn på lekplatsen, set Plattform till iOS, och klicka Nästa. Berätta Xcode där du vill spara lekplatsen och träffa Skapa.
Rensa innehållet på lekplatsen så att vi kan börja med en ren skiffer. Vi har redan använt variabler i den tidigare handledningen, men låt oss nu titta närmare på de nitty-gritty detaljerna för att bättre förstå vad Swift gör bakom kulisserna.
I Swift använder vi var
sökord för att deklarera en variabel. Medan detta liknar hur variabler förklaras på andra programmeringsspråk rekommenderar jag starkt att du inte tänker på andra programmeringsspråk när du använder var
nyckelord i Swift. Det finns några viktiga skillnader.
De var
sökord är det enda sättet att deklarera en variabel i Swift. Den vanligaste och kortaste användningen av var
nyckelordet är att deklarera en variabel och tilldela ett värde till det.
var street = "5th Avenue"
Kom ihåg att vi inte avslutar den här koden med en semikolon. Medan en semikolon är frivillig i Swift, är det inte lämpligt att använda semikolon om det inte är nödvändigt.
Du kan också ha märkt att vi inte angav en typ när du förklarar variabeln gata
. Detta leder oss till en av Swifts nyckelfunktioner, skriv inferens.
Ovanstående uttalande förklarar en variabel gata
och tilldelar värdet 5th Avenue
till det. Om du är ny på Swift eller du är van vid JavaScript eller PHP, kanske du tänker på att Swift är ett typlöst eller löst typat språk, men ingenting kan vara längre ifrån sanningen. Låt mig upprepa att Swift är ett starkt skrivet språk. Skriv säkerhet är en av hörnstenarna i språket.
Vi har precis börjat, och Swift visar oss redan lite av sin magi. Även om ovanstående uttalande inte explicit anger en typ, variabeln gata
är av typ Sträng
. Detta är Swifts typinferens i åtgärd. Värdet vi tilldelar gata
är en sträng. Swift är tillräckligt smart för att se det och implicit sätter typen av gata
till Sträng
.
Följande uttalande ger oss samma resultat. Skillnaden är att vi uttryckligen anger typen av variabeln. Detta uttalande säger det bokstavligen gata
är av typ Sträng
.
var street: String = "5th Avenue"
Swift kräver att du explicit eller implicit bestämmer typen av variabler och konstanter. Om du inte gör det, klagar Swift genom att kasta ett fel. Lägg till följande rad på din lekplats för att se vad jag menar.
var nummer
Detta uttalande skulle vara helt giltigt i JavaScript eller PHP. I Swift är det dock ogiltigt. Anledningen är enkel. Även om vi förklarar en variabel med hjälp av var
sökord, anger vi inte variabelns typ. Swift kan inte avleda typen eftersom vi inte tilldelar ett värde till variabeln. Om du klickar på felet, talar Xcode om vad som är fel med detta uttalande.
Vi kan enkelt lösa problemet genom att göra en av två saker. Vi kan tilldela ett värde till variabeln som vi gjorde tidigare, eller vi kan explicit ange en typ för variabeln siffra
. När vi uttryckligen anger typen av siffra
, felet försvinner. Den nedan angivna koden läser det siffra
är av typ Sträng
.
Var nummer: String
Som du kan se nedan, tilldela nya värden till gata
och siffra
är enkelt och kommer inte med några överraskningar.
var street: String = "5th Avenue" var nummer: String street = "Main Street" number = "10"
Skulle det inte vara lättare att tilldela numret 10
till siffra
variabel? Det finns inget behov av att lagra gatunummer som en sträng. Låt oss se vad som händer om vi gör det.
var street: String = "5th Avenue" var nummer: String street = "Main Street" nummer = 10
Om vi tilldelar ett heltal till siffra
, Xcode kastar ett annat fel hos oss. Felmeddelandet är klart. Vi kan inte tilldela ett värde av typen int
till en variabel av typen Sträng
. Detta är inte ett problem på löst typade språk, men det är i Swift.
Swift är ett starkt skrivet språk där varje variabel har en viss typ, och den typen kan inte ändras. Läs denna mening igen för att låta den sjunka in eftersom det här är ett viktigt begrepp i Swift.
För att bli av med felet måste vi förklara siffra
variabel som en int
. Ta en titt på det uppdaterade exemplet nedan.
var street: String = "5th Avenue" var nummer: Int street = "Main Street" nummer = 10
Det är viktigt att du håller följande i åtanke. Du kan deklarera en variabel med var
sökord, och du behöver inte uttryckligen deklarera variabelns typ. Kom dock ihåg att varje variabel- och konstant-har en typ i Swift. Om Swift inte kan härleda typen, klagar det. Varje variabel har en typ, och den typen kan inte ändras.
Konstanter liknar variabler när det gäller typing. Den enda skillnaden är att värdet på en konstant inte kan ändras när det har ett värde. Värdet av en konstant är, väl ... konstant.
För att deklarera en konstant använder du låta
nyckelord. Ta en titt på följande exempel där vi förklarar gata
som en konstant istället för en variabel.
låt gata: String = "5th Avenue" var nummer: Int street = "Main Street" nummer = 10
Om vi bara uppdaterar den första raden, byter du ut var
med låta
, Xcode kastar ett fel av uppenbara skäl. Att försöka ändra värdet på en konstant är inte tillåtet i Swift. Ta bort eller kommentera raden där vi försöker att tilldela ett nytt värde till gata
att bli av med felet.
låt gata: String = "5th Avenue" var nummer: Int // street = "Main Street" nummer = 10
Jag hoppas du håller med om att deklarerande konstanter är väldigt lätt i Swift. Det finns inget behov av exotiska nyckelord eller en komplex syntax. Deklarerande konstanter är lika lätt som deklarerar variabler, och det är ingen slump.
Användningen av konstanter uppmuntras i Swift. Om ett värde inte kommer att förändras eller du inte förväntar dig att det ändras, ska det vara en konstant. Detta har ett antal fördelar. En av fördelarna är prestanda, men en viktigare fördel är säkerheten. Genom att använda konstanter när det är möjligt lägger du till begränsningar till din kod, vilket resulterar i säkrare kod.
De flesta programmeringsspråk har ett brett utbud av typer för att lagra strängar, heltal, floats, etc. Listan över tillgängliga typer i Swift är koncis. Ta en titt på följande lista:
int
Flyta
Dubbel
Sträng
Karaktär
Bool
Det är viktigt att förstå att ovanstående typer inte är grundläggande eller primitiva typer. De är namngivna typer, som implementeras av Swift med hjälp av strukturer. Vi undersöker strukturer mer detaljerat senare i denna serie, men det är bra att veta att de typer vi hittills stött på inte är de samma som de primitiva typerna du kanske har använt i, till exempel Objective-C.
Det finns många fler datatyper i Swift, till exempel tuples, arrays och ordböcker. Vi utforskar de senare i denna serie.
Det finns ytterligare ett ämne som vi behöver diskutera, typkonvertering. Ta en titt på följande Objektiv-C-kod. Detta kodblock utmatar värdet 314.000000
till konsolen.
int a = 100; float b = 3,14; NSLog (@ "% f", (a * b));
Objective-C runtime omvandlar implicit en
till ett flytpunktvärde och multiplicerar det med b
. Låt oss skriva om ovanstående kodbit med Swift.
var a = 100 var b = 3,14 utskrift (a * b)
Ignorera trycket (_: separator: terminator :)
funktion för nu. Jag vill först fokusera på multiplikationen av en
och b
. Swift infrar den typ av en
, en int
, och b
, en Dubbel
. Men när kompilatorn försöker multiplicera en
och b
, det märker att de inte är av samma typ. Det här kanske inte verkar som ett problem för dig, men det är för Swift. Swift vet inte vilken typ resultatet av denna multiplikation borde vara. Ska det vara ett heltal eller en dubbel?
För att åtgärda problemet måste vi se till att båda operanderna i multiplikationen är av samma typ. Swift omvandlar inte implicit operandorna till oss, men det är lätt att göra det. I det uppdaterade exemplet nedan skapar vi en Dubbel
använder värdet som lagrats i en
. Detta löser felet.
var a = 100 var b = 3,14 utskrift (dubbel (a) * b)
Observera att typen av en
har inte ändrats. Även om ovanstående kodbit kan se ut som typgjutning, är det inte samma sak. Vi använda sig av värdet lagrat i en
att skapa en Dubbel
, och det resultatet används i multiplikationen med b
. Resultatet av multiplikationen är av typen Dubbel
.
Vad du behöver komma ihåg är att Swift skiljer sig från C och Objective-C. Det omvandlar inte implicit värden av variabler och konstanter. Detta är ett annat viktigt begrepp att förstå.
I det föregående kodfältet åberopade du din första funktion, trycket (_: separator: terminator :)
. Denna funktion liknar Objective-C NSLog
; det skriver ut något och lägger till en ny linje. För att skriva ut något till konsolen eller resultatpanelen till höger, åberopar du trycket (_: separator: terminator :)
och skicka det till en parameter. Det kan vara en variabel, en konstant, ett uttryck eller en bokstavlig. Ta en titt på följande exempel.
var sträng = "Detta är en sträng" Låt konstant = 3,14 Skriv ut (String) Skriv ut (Konstant) Skriv ut (10 * 50) Skriv ut ("Sträng bokstavligt")
Det är också möjligt att använda stränginterpolering för att kombinera variabler, konstanter, uttryck och bokstäver. Stränginterpolering är väldigt lätt i Swift. Wrap variablerna, konstanterna, uttrycken eller bokstäverna i \ ()
. Lätt som en plätt.
låt gata = "5th Avenue" släpp nummer = 10 skriv ut ("Hon bor på \ (gata) \ (nummer).")
Det är viktigt att du förstår hur Swift hanterar variabler och konstanter. Även om det kan ta lite tid att vänja sig på konceptet konstanter, när du väl har tagit del av denna bästa praxis kommer din kod att vara mycket säkrare och lättare att förstå. I nästa handledning av denna serie fortsätter vi vår utforskning av Swift genom att titta på samlingar.
Vi har byggt en komplett guide för att hjälpa dig att lära dig Swift, oavsett om du bara har börjat med grunderna eller vill utforska mer avancerade ämnen.
Om du vill lära dig hur du använder Swift 3 för att koda i verkliga applikationer, kolla in vår kurs Skapa iOS Apps With Swift 3. Om du är ny i iOS-apputveckling eller letar efter att göra omkopplaren från Objective-C, så här Kursen kommer att komma igång med Swift för apputveckling.