Swift 101 - Klasser, Variabler, Egenskaber og Metoder

Som lovet er her min første rate på at lære at programmere i det nye Swift-sprog!

Definere klasser i Swift

Følgende kode viser et eksempel på en Swift klasse definition:

For at erklære en klasse i Swift bruger du klassens søgeord efterfulgt af klassens navn. Hvis den har en superklasse, tilføjer du et kolon og navnet på superklassen. Begyndelsen og slutningen af ​​klassen er angivet ved åbning og lukning krøllebøjler.

I Swift defineres klasser i en enkelt .swift kildekodefil sammenlignet med Objective-C, hvor klasser er defineret i to separate filer, en header (.h) fil og en implementeringsfil (.m).

Deklarere Variabler

Følgende kode viser et eksempel på en variabel angivelse:

Du starter en variabel deklaration med var- søgeordet efterfulgt af navnet på variablen. Dernæst tilføjer du et kolon efterfulgt af variabeltypen. Derefter kan du tildele en værdi til variablen ved hjælp af (=) assignment operatøren.

I Swift, hvis du tildeler en startværdi til en variabel, behøver du ikke at angive variabeltype som vist i følgende kode:

Du kan gøre dette, fordi Swift har noget kaldet type inference, hvor det kan finde ud af, eller aflede typen af ​​variablen baseret på den værdi, du tildeler den.

I Mål-C kan du erklære forekomstvariabler på klasseniveau og lokale variabler inden for metoder. I Swift findes der ingen variabler på klasseniveau - kun lokale variabler, som du erklærer inden for metoder. Du kan dog erklære egenskaber på klasseniveau (se afsnittet Deklarer egenskaber nedenfor).

Enden af ​​Asterisken

I Objective-C bruger du en asterisk til at indikere, at en variabel har en pointer til en objekt. I Swift kan en konstant eller variabel indeholde en pointer til en adresse i hukommelsen (selvom det ikke er en direkte pointer), men du behøver aldrig bruge en stjerne i denne sammenhæng.

Deklarere Simple Properties

Følgende kode viser et eksempel på en ejendomserklæring:

Som du kan se, ligner det meget på at erklære en variabel, bortset fra at du erklærer en ejendom på klasseniveau i stedet for inden for en metode.

Som med variabler, skal du ikke angive egenskabens type, hvis du tildeler en startværdi til en ejendom. Du kan også initialisere egenskaber fra initialiseringsmetoder (se afsnittet nedenfor om Initializers for detaljer.) Følgende kode viser et eksempel på at erklære en ejendom uden at angive en type:

I Objective-C havde ejendomme typisk backing-instansvariabler, hvori ejendommens faktiske værdi blev lagret. Swift forenkler egenskaber ved at forene begreberne egenskaber og instansvariabler. Egenskaber har ikke længere en backing-instansvariabel. Alt om en ejendom er erklæret på et enkelt sted.

I Swift behøver du ikke bruge selve søgeordet til at henvise til en ejendom, medmindre den metode, du skriver kode med, har en parameter med samme navn som ejendommen.

Deklarerer Beregnede Egenskaber

Swift har også beregnet egenskaber, der har tilknyttede get og set metoder som vist i følgende kode:

I dette eksempel har termometerklassen en simpel temperaturFahrenheit- egenskab og en beregnet tempereretCelsius- egenskab.

Bemærk, at termometerklassens get- og sætningsmetoder ikke refererer til en instansvariabel, fordi der ikke er noget som en instansvariabel i Swift!

I dette tilfælde henter get- metoden værdien fra temperaturen Fahrenheit-ejendommen, konverterer den til Celsius og returnerer værdien. Den indstillede metode tager værdien til det, konverterer den til Fahrenheit og gemmer derefter resultatet i temperaturen Fahrenheit-ejendommen.

Værdien, der overføres til egenskabens indstillede metode, gemmes i en implicit navngivet parameter kaldet newValue . Hvis du vil bruge et andet parameternavn, kan du angive navnet i parentes efter indstillingen som vist i følgende kode:

Angivelse af et parameternavn kan gøre din kode lettere at forstå. I dette eksempel gør det klart, at den indstillede metode konverterer værdien fra Celsius til Fahrenheit ved at indstille parameterens navn til celsiusValue .

Declaration Methods

Følgende kode indeholder et eksempel på en Swift-metoden deklaration:

Som med mål-C, i Swift, erklærer du en instansmetode mellem de indledende og lukkede krøller af den klasse, som den tilhører.

Hvis du vil erklære en metode, skal du først angive func- søgeordet, efterfulgt af navnet på metoden. Hvis metoden har parametre, indgår du i parenteserne. For hver parameter angiver du navnet på parameteren efterfulgt af et kolon efterfulgt af dens type. Hvis metoden har en returværdi, tilføjer du en bindestreg og større end tegn ( -> ) efterfulgt af typen af ​​returværdien.

Den følgende kode indeholder et eksempel på en metode, der ikke accepterer parametre og returnerer ingenting:

Som du kan se, kræves parentes efter metodenavnet, selvom der ikke er nogen parametre. En metode, der returnerer intet, behøver ikke indikatoren for returneringsværdi ( -> ) efter parenteserne.

Initializer Metoder

Den følgende kode indeholder et eksempel på en initialiseringsmetode, der bruges til at initialisere en klasse.

Initializer metoder kaldes altid init og, i modsætning til Objective-C, returnerer aldrig en værdi. I ovenstående eksempel accepterer init- metoden en currentTemperature parameter, hvor du kan passere starttemperaturen. Denne værdi gemmes derefter i temperaturenFahrenheit- ejendommen.

Du kan oprette flere initalizer metoder som vist i følgende kode prøve:

I dette eksempel benævnes begge metoder init, så for at gøre navne unikke, er et eksternt navn tildelt parametrene - fraFahrenheit og fromCelsius . Dette gør den fulde metode navne init (fraFahrenheit :) og init (fraCelsius :) henholdsvis.

Det er værd at bemærke, at i Swift er init metoder ikke arvet. Fra et praktisk perspektiv betyder dette, at du ikke bør placere nogen kode i en init- metode, som du vil kunne tilsidesætte i en underklasse. Hvis du har kode, som du vil henrette under initialfasen af ​​en klasse og vil kunne overstyre den pågældende kode i en underklasse, kan du oprette en separat metode, placere initialiseringskoden i den pågældende metode og derefter kalde den pågældende metode fra init .

Oprettelse af en forekomst af en klasse

Her er et eksempel på, hvordan man opretter en forekomst af en klasse:

Som du kan se, for at oprette en forekomst af en klasse, erklærer du en variabel for at holde en reference til klassen, indtast et ensartet tegn (assignment operator) og derefter klassens navn efterfulgt af parenteser.

Konklusion

Dette er nogle af de meget grundlæggende, du skal vide for at komme i gang med Swift programmering. I kommende stillinger vil jeg dykke dybere ind i sproget for at hjælpe dig med at blive dygtig med Swifts nye syntaks og struktur.