Swift 101 - Klase, varijable, svojstva i metode

Kao što sam obećao, ovdje je moj prvi nastavak učenja za programiranje na novom Swift jeziku!

Definiranje klasa u Swiftu

Sljedeći kôd prikazuje primjer definicije klase Swift:

Da biste klasificirali klasu u Swiftu, koristite ključnu riječ klase koju slijedi ime klase. Ako ima nadklasu, dodaje se dvotočka i naziv superklase. Početak i kraj klase označeni su otvaranjem i zatvaranjem vitičastih zagrada.

U Swiftu, klasa je definirana u jednoj .swift datoteci izvornog koda u usporedbi s Objective-C, gdje su klase definirane u dvije odvojene datoteke, zaglavlje (.h) datoteku i implementacijsku (.m) datoteku.

Deklariranje varijabli

Sljedeći kod prikazuje primjer deklaracije varijable:

Izjavu varijable započinje s ključnom riječi var koju slijedi ime varijable. Zatim dodajete dvotočku, a zatim vrstu varijable. Nakon toga, varijabli možete dodijeliti vrijednost pomoću (=) operatora dodjele.

U Swiftu, ako dodijelite početnu vrijednost varijabli, ne morate specificirati vrstu varijable kao što je prikazano u sljedećem kodu:

To možete učiniti jer Swift ima nešto što se naziva tipom zaključivanja gdje može shvatiti, ili izvesti tip varijable na temelju vrijednosti koju ste mu dodijelili.

U Objective-C možete deklarirati varijable instance na razini klase i lokalne varijable unutar metoda. U Swiftu nema varijabli na razini razreda - samo lokalne varijable koje deklarirate unutar metoda. Međutim, svojstva možete deklarirati na razini razreda (pogledajte odjeljak Objavljivanje svojstava u nastavku).

Kraj Asteriska

U Objective-C koristite zvjezdicu da biste naznačili da varijabla sadrži pokazivač na objekt. U Swiftu, konstanta ili varijabla mogu sadržavati pokazivač na adresu u memoriji (iako nije izravan pokazivač), ali u tom kontekstu nikada ne trebate koristiti zvjezdicu.

Proglašavanje jednostavnih svojstava

Sljedeći kod pokazuje primjer deklaracije svojstva:

Kao što možete vidjeti, vrlo je slično deklariranju varijable, osim što svojstvo deklarirate na razini razreda, a ne unutar metode.

Kao i kod varijabli, ako dodijelite početnu vrijednost svojstvu, ne morate specificirati vrstu svojstva. Isto tako možete inicijalizirati svojstva unutar metoda inicijalizatora (pogledajte odjeljak ispod o inicijalizatorima za detalje.) Sljedeći kod prikazuje primjer deklariranja svojstva bez navođenja tipa:

U Objective-C, svojstva su obično imala prateće varijable instance u kojima je pohranjena stvarna vrijednost imovine. Swift pojednostavljuje svojstva objedinjavanjem pojmova svojstava i varijabli instance. Svojstva više nemaju varijablu sigurnosne kopije. Sve o nekretnini prijavljeno je na jednom mjestu.

U Swiftu, ne morate koristiti ključnu riječ self da se odnosi na svojstvo, osim ako metoda u kojoj pišete kod ima parametar s istim imenom kao i svojstvo.

Deklariranje izračunanih svojstava

Swift također ima izračunata svojstva koja imaju pridružene metode get i set, kao što je prikazano u sljedećem kodu:

U ovom primjeru, klasa termometra ima jednostavno svojstvo temperatureFahrenheit i izračunato svojstvo temperateCelsius .

Primijetite da metode get i set klase Termometar ne referenciraju varijablu instance, jer ne postoji takva stvar kao varijabla instance u Swiftu!

U ovom slučaju, get metoda dohvaća vrijednost iz temperatureFahrenheit svojstva, pretvara ga u Celsius i vraća vrijednost. Metoda skupa uzima vrijednost koja joj je proslijeđena, pretvara je u Fahrenheit i zatim pohranjuje rezultat u svojstvo temperatureFahrenheit .

Vrijednost proslijeđena metodi skupa svojstava pohranjena je u implicitno imenovanom parametru pod nazivom newValue . Ako želite koristiti drugo ime parametra, možete odrediti ime u zagradama iza skupa, kao što je prikazano u sljedećem kodu:

Određivanjem naziva parametra lakše ćete ga razumjeti. U ovom primjeru postavljanjem parametra na celsiusValue postaje jasnije da metoda skupa pretvara vrijednost iz Celzija u Fahrenheit.

Proglašavanje metoda

Sljedeći kod sadrži primjer Swift deklaracije o metodi:

Kao i kod Objective-C, u Swiftu, deklarirate metodu instance između otvaranja i zatvaranja vitičastih zagrada klase kojoj pripada.

Da biste deklarirali metodu, najprije navedite ključnu riječ func, nakon koje slijedi ime metode. Ako metoda ima parametre, uključite ih u zagrade. Za svaki parametar navedete ime parametra nakon kojeg slijedi dvotočka, a zatim njegov tip. Ako metoda ima povratnu vrijednost, tada dodajete crticu i veću vrijednost od znaka ( -> ) iza koje slijedi tip povratne vrijednosti.

Sljedeći kod sadrži primjer metode koja ne prihvaća nikakve parametre i ne vraća ništa:

Kao što možete vidjeti, zagrade su potrebne nakon naziva metode, čak i ako nema parametara. Metoda koja ne vraća ništa ne treba pokazivač povratne vrijednosti ( -> ) iza zagrada.

Inicijalizacijske metode

Sljedeći kod sadrži primjer metode inicijalizacije koja se koristi za inicijalizaciju klase.

Inicijalizacijske metode uvijek se nazivaju init i, za razliku od Objective-C, nikada ne vraćaju vrijednost. U gornjem primjeru, metoda init prihvaća parametar currentTemperature u kojem možete prenijeti početnu temperaturu. Ta se vrijednost zatim pohranjuje u svojstvo temperatureFahrenheit .

Možete stvoriti više metoda inicijalizacije kao što je prikazano u sljedećem uzorku koda:

U ovom primjeru, obje se metode nazivaju init, tako da se parametrima dodijeli vanjsko ime - od Farenheita i Celzija . To čini punu imena metoda init (fromFahrenheit :) i init (fromCelsius :) respektivno.

Važno je napomenuti da u Swiftu init metode nisu naslijeđene. Iz praktične perspektive, to znači da ne biste smjeli staviti bilo koji kod u init metodu koju želite biti u mogućnosti pregaziti u potklasi. Ako imate kôd koji želite izvršiti tijekom početne faze klase i želite biti u mogućnosti nadjačati taj kôd u potklasi, možete stvoriti zasebnu metodu, smjestiti inicijalizacijski kod u tu metodu, a zatim pozvati tu metodu iz init .

Stvaranje instance klase

Evo primjera kako stvoriti instancu klase:

Kao što možete vidjeti, za kreiranje instance klase, proglašavate varijablu koja sadrži referencu na klasu, upišite znak jednakosti (operator dodjeljivanja), a zatim naziv klase nakon kojeg slijede zagrade.

Zaključak

Ovo su neke od osnova koje trebate znati da biste započeli s Swift programiranjem. Na nadolazećim postovima uronit ću dublje u jezik kako bih vam pomogao da steknete znanje o Swiftovoj novoj sintaksi i strukturi.