Přejít k navigační liště

Zdroják » Zprávičky » Přednáška o metaprogramování ve Swiftu

Přednáška o metaprogramování ve Swiftu

Zprávičky Různé

Určitě jste již zažili error “Unexpectedly found nil while unwrapping an Optional value”, když jste se pokoušeli inicializovat UIImage pomocí názvu obrázku, ve kterém jste měli překlep. Nebylo by fajn mít statickou množinu názvů a přitom využívat autocomplete Xcode-u? Určitě ano, představte si ale, že už nikdy nebudete muset psát nudný boilerplate kód. V následujících odstavcích se vám pokusím ukázat jak je možné využít metaprogramování v každodenním životě iOS developera.

Před tím, než se budeme věnovat této technice ve Swiftu, bylo by dobré vědět, co to vlastně metaprogramování obecně je.

Definice z Wikipedie je poměrně srozumitelná:

“Metaprogramování je skupinou programovacích technik, které umožňují psaní programů, které vytváří další programy nebo s nimi nakládají jako se svými daty. Případně se může jednat o programy, které při svém běhu mohou dělat činnosti, které by jinak musely provádět již při kompilaci.”

Volně by se dalo říci, že metaprogramování je jednoduše tvorba kódu, jehož výsledkem je další kód. Už z definice vyplívá rozdělení na “compile time” a “runtime”.

Do skupiny metaprogramů patří například:

  • Parsery
  • Doménově specifické jazyky (DSLs)
  • Kompilátory
  • Interpretery

Tak a teď k věci, jak je možné využít metaprogramování v každodenním životě iOS vývojáře? Je obecně známo, že momentální stav Swift runtimu toho neumožňuje hodně, proto zůstává použití “compile time” technik. V úvodu jsem zmínil, že by bylo fajn mít statickou množinu obrázků. Přesně na tento účel je určena aplikace SwiftGen, která automaticky potřebný kód generuje a to nejen pro obrázky ale i pro fonty, lokalizované texty a podobně. SwiftGen je pěkný příklad metaprogramu.

Ještě donedávna byla implementace Hashable a Equatable protokolů další každodenní nepříjemnost iOS developera. Od nové verze Xcode-u je sice tento problém automaticky vyřešený (metaprogramování at it’s best), ale je to jen špička ledovce.

Když Apple vytvořil Swift, potřeboval, aby ho podporoval Xcode. Přesně proto vznikl SourceKit, který umožnil parsování zdrojového kódu, zvýraznění syntaxe, odsazení kódu, autocomplete, generování hlaviček a podobně. Existence SourceKitu umožnila vznik několika zajímavých nástrojů, mezi nimi i aplikace Sourcery.

Sourcery je aplikace, která použitím SourceKit-u skenuje zdrojový kód, nabytá data jsou potom dostupná v šablonách, díky tomu je možné generovat libovolné řešení. Šablony mohou být napsané v jazycích Swift, Stencil nebo JavaScript. Stencil je jednoduchý šablonový jazyk, který je jako stvořený pro tvorbu jednoduchých šablon. V šablonách psaných v jazyku Swift je možné využít takřka všechny jeho funkce, nevýhodou je však jeho rychlost.

Chtěli byste vědět jak vytvořit podobné šablony ve Swiftu a nebo v Stencilu? Přijďte si poslechnout můj talk na #blueberryMeetUp nazvaný Three iOS related talks 14. 5. od 19.00 hodin do Blueberry.

Komentáře

Odebírat
Upozornit na
guest
0 Komentářů
Nejstarší
Nejnovější Nejvíce hlasů

„Hazardují s našimi životy“: Odchod výzkumníka rozjel na X debatu o vyhubení lidstva AI

AI
Komentáře: 0
Debata o tom, zda umělá inteligence může přivodit konec lidstva, se přehnala sociální sítí X. Odchod bezpečnostního výzkumníka z Anthropicu a jeho odhad desetiprocentní pravděpodobnosti vyhynutí spustil vlnu, do níž se zapojil i šéf firmy Dario Amodei. Zatímco jedni volají po zpomalení vývoje, čerstvý report ukazuje, jak jsou modely zneužívány už dnes.

Tailwind není jediná cesta. Pět přístupů k CSS, které stojí za zvážení

Zeptejte se dnes libovolného juniora, čím bude stylovat nový projekt, a s pravděpodobností hraničící s jistotou uslyšíte „Tailwind“. Zeptejte se jazykového modelu a dostanete Tailwind dokonce i tehdy, když jste o něm nic neřekli. Utility-first přístup se za posledních pět let stal tichým defaultem celého frontendu, a to natolik, že volba stylovacího nástroje přestala být rozhodnutím a stala se rituálem.