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

Diskuze k článku

Vložte vlastní komentář

celý text

Čtěte dále

Více z rubriky Seriály

Dnes nejčtenější

.