Swift 101 - třídy, proměnné, vlastnosti a metody

Jak jsem slíbil, zde je moje první splátka na učení se programování v novém jazyce Swift!

Definování tříd v Swift

Následující kód ukazuje příklad definice třídy Swift:

Chcete-li deklarovat třídu v aplikaci Swift, použijete klíčové slovo třídy následované názvem třídy. Pokud má nadtřídu, přidáte dvojtečku a název nadtřídy. Začátek a konec třídy jsou označeny otevíracími a uzavíracími složenými závorkami.

Ve službě Swift jsou třídy definovány v jediném zdrojovém souboru .swift ve srovnání s objektivem C, kde jsou třídy definovány ve dvou samostatných souborech, souboru záhlaví (.h) a souboru implementace (m).

Deklarování proměnných

Následující kód ukazuje příklad deklarace proměnné:

Začínáme deklaraci proměnné s klíčovým slovem var následovaným názvem proměnné. Dále přidáte dvojtečku následovanou typem proměnné. Poté můžete proměnné přiřadit hodnotu pomocí operátoru přiřazení (=).

Pokud v proměnné Swift přiřadíte počáteční hodnotu proměnné, nemusíte specifikovat typ proměnné podle následujícího kódu:

Můžete to udělat, protože Swift má něco, co se nazývá odvození typu, kde může zjistit, nebo odvodit typ proměnné na základě hodnoty, kterou mu přidělíte.

V Objective-C můžete deklarovat proměnné instance na úrovni třídy a lokálních proměnných v rámci metod. V aplikaci Swift neexistují žádné proměnné na úrovni třídy - pouze lokální proměnné, které deklarujete v rámci metod. Vlastnosti však můžete deklarovat na úrovni třídy (viz část Deklarace vlastností níže.)

Konec hvězdičky

V Objective-C použijete hvězdičku k označení, že proměnná drží ukazatel na objekt. V Swift může konstanta nebo proměnná obsahovat ukazatel na adresu v paměti (i když ne přímý ukazatel), ale v tomto kontextu nemusíte nikdy používat hvězdičku.

Deklarování jednoduchých vlastností

Následující kód zobrazuje příklad deklarace vlastností:

Jak vidíte, je to velmi podobné deklaraci proměnné, kromě toho, že deklarujete vlastnost na úrovni třídy, nikoli v rámci metody.

Stejně jako u proměnných, pokud vlastnost přidělíte počáteční hodnotě, nemusíte zadat typ vlastnosti. Můžete také inicializovat vlastnosti v rámci metod inicializátoru (podrobnosti naleznete v části Inicializátory níže.) Následující kód ukazuje příklad deklarování vlastnosti bez zadání typu:

V Objective-C měly vlastnosti typicky proměnné instance backing, ve kterých byla uložena skutečná hodnota vlastnosti. Swift zjednodušuje vlastnosti sjednocením konceptů vlastností a proměnných instancí. Vlastnosti již nemají proměnnou instance zálohování. Vše o nemovitosti je deklarováno na jednom místě.

V aplikaci Swift nemusíte použít klíčové slovo self pro odkazování na vlastnost, pokud metoda, do které zapisujete kód, nemá parametr se stejným názvem jako vlastnost.

Deklarované vlastnosti

Swift má také vypočítané vlastnosti, které mají přidružené metody get a set, jak je uvedeno v následujícím kódu:

V tomto příkladu má třída teploměrů jednoduchou vlastnost TemperatureFahrenheit a vypočítanou vlastnost temperateCelsius .

Všimněte si, že metody get a set třídy Teploměr neodkazují na proměnnou instance, protože v Swift neexistuje žádná taková věc jako proměnná instance.

V tomto případě metoda get načte hodnotu z vlastnosti temperatureFahrenheit, převede ji na Celsius a vrátí hodnotu. Nastavená metoda vezme hodnotu předanou do ní, převede ji na Fahrenheit a poté uloží výsledek do vlastnosti temperatureFahrenheit .

Hodnota předaná metodě sady vlastností je uložena v implicitně pojmenovaném parametru nazvaném newValue . Pokud chcete použít jiný název parametru, můžete název zadat v závorkách za sadou, jak je uvedeno v následujícím kódu:

Zadání názvu parametru může usnadnit pochopení kódu. V tomto příkladu nastavení názvu parametru na celsiusValue je jasnější, že nastavená metoda převádí hodnotu z Celsia na Fahrenheit.

Metody deklarace

Následující kód obsahuje příklad deklarace metody Swift:

Stejně jako u Objective-C, v Swift, deklarujete metodu instance mezi otevíracími a zavíracími složenými závorkami třídy, ke které patří.

Pro deklaraci metody nejprve určete klíčové slovo func následované názvem metody. Pokud má metoda parametry, vložíte je do závorek. U každého parametru určete název parametru následovaný dvojtečkou, za nímž následuje jeho typ. Pokud má metoda návratovou hodnotu, přidejte pomlčku a větší než znaménko ( -> ) následované typem návratové hodnoty.

Následující kód obsahuje příklad metody, která přijímá žádné parametry a vrací nic:

Jak vidíte, závorky jsou vyžadovány za názvem metody, i když neexistují žádné parametry. Metoda, která vrací nic, nepotřebuje po závorkách indikátor návratové hodnoty ( -> ).

Inicializační metody

Následující kód obsahuje příklad metody inicializátoru, která se používá k inicializaci třídy.

Metody Initializer jsou vždy pojmenovány init a na rozdíl od Objective-C nikdy nevracejí hodnotu. Ve výše uvedeném příkladu metoda init akceptuje parametr currentTemperature, ve kterém můžete předat počáteční teplotu. Tato hodnota se pak uloží do vlastnosti temperatureFahrenheit .

Můžete vytvořit více metod initalizer, jak je ukázáno v následujícím ukázce kódu:

V tomto příkladu jsou obě metody pojmenovány init, takže aby byly názvy jedinečné, je externím názvem přiřazen parametr - fromFahrenheit a fromCelsius . Díky tomu jsou úplné názvy metod init (fromFahrenheit :) a init (fromCelsius :) .

Stojí za zmínku, že metody Swift nejsou zděděny. Z praktického hlediska to znamená, že byste do metody init neměli umisťovat žádný kód, který chcete přepsat v podtřídě. Pokud máte kód, který chcete provést během iniciační fáze třídy a chcete mít možnost tento kód přepsat v podtřídě, můžete vytvořit samostatnou metodu, umístit inicializační kód do této metody a potom tuto metodu zavolat z init .

Vytvoření instance třídy

Zde je příklad, jak vytvořit instanci třídy:

Jak můžete vidět, pro vytvoření instance třídy deklarujete proměnnou, která bude obsahovat odkaz na třídu, zadejte znak rovnosti (operátor přiřazení) a potom název třídy následovaný závorkami.

Závěr

To jsou některé ze základních principů, které potřebujete vědět, abyste mohli začít s programováním Swift. V nadcházejících příspěvcích se ponořím hlouběji do jazyka, abych vám pomohl získat znalosti s novou syntaxí a strukturou Swift.