Zavřít reklamu

V dnešním díle našeho seriálu o programování ve Swiftu se ponoříme opět trošku hlouběji. Vrhneme se na odhalení toho hlavního, čím se v počátku Swift od svých kolegů liší a především proč. Říkali jste si někdy, proč například při parsování píšeme ty otravné vykřičníky? S tímto totiž velmi úzce souvisí typ Optional, před jehož vysvětlením si budeme muset vysvětlit koncept a užití hodnoty nil.

Nil

Pokud jste se již dříve s programováním setkali, nil se v nich často označuje klíčovým slovem null. Není mezi nimi žádný rozdíl a fungují naprosto stejně. Pokud se ale o programování začínáte zajímat až teď, možná vás jemně překvapí představa, že nil je zkrátka nic. Celou situaci si můžeme vysvětlit na příkladu, kdy máme pod vánočním stromečkem zabalený dárek – řekněme krabici. Většinou se v té krabici něco nachází a tudíž není prázdná. Pokud ale máme ve svém blízkém okruhu například sourozence vtipálka, může se stát, že nám daruje krabici úplně prázdnou – což můžeme označit právě hodnotou nil. Přenesme se ale na konkrétní příklad. Máme proměnnou typu Optional a dvě krabice. Ty pro zobrazení jejich obsahu musíme rozbalit, stejně jako v případě vánočních dárků. V jedné se nachází hodnota 4 a v druhé nenajdeme vůbec nic – tedy hodnotu nil.

Optionals

Ve Swiftu Optional značí určitý typ, který se definuje otazníkem. Například máme proměnnou typu Int a Int? (tedy Optional Int). Zatímco u té první si můžeme být zcela jisti, že se v ní nachází libovolná hodnota, v případě té druhé musíme provést rozbalení a sami se o tom přesvědčit. Na níže přiloženém obrázku můžeme velmi stručně vidět, jak probíhá založení takové proměnné.

swift-optionals

Forced Unwrapping

Pojem forced unwrapping značí doslova vynucené rozbalení boxu. Pokud například máme proměnnou Int? a víme, že je v ní nějaká hodnota, nemusíme se rozbalení obávat a můžeme jej v klidu provést. Toho dosáhneme přidáním známého vykřičníku, který jak již bylo zmíněno, celé rozbalení vynutí. Problém však může nastat v případě, kdy se v proměnné nachází hodnota nil. V takovémto okamžiku nám celá aplikace spadne a z toho důvodu bychom si na tento fakt měli dávat pozor. Naštěstí se nabízí situaci ošetřit pomocí jednoduché podmínky, v které proměnnou rozbalíme pouze v případě, kdy její hodnota není nil.

swift-forced-unwrapping

Optional Binding

Podobně jako forced unwrapping je optional binding způsob, jak otevřít box s řekněme nějakou hodnotou. Tento způsob je však logičtější a dokonce bezpečnější, jelikož k rozbalení dojde pouze tehdy, kdy daná proměnná typu Optional skutečně hodnotu obsahuje a tedy nedojde k žádnému pádu aplikace.

Níže popsaný kód by se dal vysvětlit takto. Pokud má proměnná cislo nějakou hodnotu, tak se extrahuje do konstanty konstantaInt. Pokud se však bude jednat o hodnotu nil, spustí se kód z větve else. Můžeme si také všimnout, že jsme nepoužili ani jeden vykřičník, tudíž rozdíl mezi forced unwrappingemoptional bindingem by měl být patrný na první pohled.

V příštím díle našeho seriálu programování se opět posuneme o kousek kupředu a rozebereme si pole. Tyto informace o typu Optional budou prozatím stačit a rozhodně s nimi budeme v budoucnu pracovat. Také se nadále můžete těšit na ještě hlubší ponoření do tohoto datového typu, jelikož jsme si dnes neukázali úplně vše.

swift-lsa-fb

Čtěte dále

Více z rubriky Seriály

Dnes nejčtenější

.