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ů

WP2Shell: Kritická hrozba pro samotné jádro WordPressu. Útočníci mohou získat kontrolu nad webem

Zranitelnost ve WordPressu není žádná novinka. Kdo provozuje weby postavené na této platformě, ví, že bezpečnostní záplaty chodí prakticky pořád. O to větší pozornost by měla vzbudit chyba, u které nic z toho neplatí. A přesně takový je případ zranitelnosti, která dostala přezdívku wp2shell. potřeb. Zranitelný kontaktní formulář, děravý e-shopový plugin, opomenutá kontrola oprávnění v nějaké obskurní rozšiřující knihovně – to je denní chleba každého, kdo sleduje bezpečnostní feedy. Zpráva „nová chyba ve WordPress pluginu“ má tak nízkou informační hodnotu, že ji většina lidí přejde bez mrknutí oka.

Mýtus jedné aplikace: proč PWA nenahradí vývoj pro každou platformu

PWA mohou webu přidat ikonu na ploše, fungování bez připojení, notifikace a některé systémové funkce. Nejsou ale cestou k jednomu klientu pro všechny platformy. Vyplatí se tam, kde se lidé k webu vracejí a ocení okamžitý vstup z odkazu. Jakmile aplikace musí spolehlivě běžet na pozadí nebo fungovat stejně na každém zařízení, bývá vhodnější nativní řešení.

Anthropic vydává Claude Opus 5

AI
Komentáře: 0
Anthropic vydal Claude Opus 5 — model, který se má výkonem blížit špičkovému Fable 5 za poloviční cenu a míří hlavně na agentické kódování. Cena zůstává na 5/25 USD za milion tokenů, přibývají API novinky jako mid-conversation tool changes a automatické fallbacky.