Funkce

Navigace:  Něco navíc >

Funkce

Předchozí stránkaNahoruDalší stránka

Prvním zástupcem z tohoto soudku jsou Funkce. Můžete namítnout, že funkce ve wherigu jsou. Ano, je to tak, ale jsou realizovány výhradně jako funkce jazyka Lua a k jejich zavolání se též bez jazyka Lua neobejdeme. To samozřejmě v Urwigu můžeme udělat taky. Urwigo nám ale navíc umožňuje vytvořit libovolný diagram jako pojmenovanou funkci, kterou pak lze zavolat na libovolných místech.

 

Možná se to někomu nezdá jako zajímavé. Vždyť přece lze libovolnou část diagramu zkopírovat do schránky a vložit na požadované místo. Ano, to je pravda. Jenže pokud náhodou budeme někdy příště potřebovat provést v rozkopírované části změny, nezbyde nám nic jiného, než je pak zopakovat ve všech kopiích. A to už přestává být zábava. Funkce nám podobný problém vyřeší naprosto elegantně. Případné změny pak provádíme pouze na jednom místě.

 

Argumenty a návratové hodnoty

Funkce v programovacích jazycích (a Lua není výjimkou) mohou mít tzv. argumenty, tj. hodnoty, které se funkci při zavolání předají, a tzv. návratovou hodnotu, tj. hodnotu, kterou funkce po svém ukončení předá volajícímu kódu. Funkce v Urwigu nic takového nemají. Zde se jedná pouze o pojmenovanou část diagramu, kterou můžeme zavolat z požadovaného místa. Nic víc, nic míň.

Není to však zase tak velké omezení, jak by se mohlo zdát. Nic nám totiž nebrání v tom, abychom argumenty předali do funkce pomocí proměnných. Stejným způsobem pak můžeme z funkce získat návratovou hodnotu. A je také samozřejmě spousta případů, kdy žádné argumenty ani návratové hodnoty nebudeme vůbec potřebovat.

 

Funkce nebyly v Urwigu od začátku, ale byly doplněny až ve verzi 1.08. Já osobně považuji přidání funkcí do Urwiga za jednu z vůbec nejzásadnějších změn v průběhu jeho vývoje. Od začátku mi citelně chyběly a nyní je hojně používám. Vřele to doporučuji všem autorům wheriga. Podle mě totiž platí: Pokud uděláte funkci, kterou zavoláte jenom jednou (takže se jeví jako zbytečná), ničemu to nevadí. Pokud však budete mít několik samostatných kopií kódu, nevýhodu tohoto řešení poznáte ve chvíli, kdy budete potřebovat cokoliv změnit.

 

Funkce a dialogy

V souvislosti s funkcemi je potřeba zmínit ještě jednu věc. V žádném případě nelze pomocí funkcí obejít způsob zobrazování zpráv a dialogů a obsluhy stisknutých tlačítek, tak jak byla popsána v příslušné kapitole. Pokud v nějaké části diagramu zavoláme funkci, která zobrazí zprávu nebo dialog, musíme si být vědomi toho, že se nám tím běh kódu zkomplikuje. Prakticky se wherigo zachová stejně, jako kdyby kód místo ve funkci byl vložen přímo do diagramu.

 

Je to určitě nepříjemná komplikace, ale je nutné na ni myslet. Ideálním řešením je používat funkce, které neobsahují žádné zprávy nebo dialogy. Ne vždy je to však možné nebo účelné. V takovém případě je dobré se zamyslet, jak to celé poskládat tak, aby nám kód fungoval správně. Vhodnou možností je uspořádat kód tak, aby volání funkce, která obsahuje zprávu nebo dialog, bylo poslední akcí příslušného diagramu.

 

Podobně je potřeba uvažovat i v případě, kdy uvnitř funkce je volání nějakého vstupu.