Při vytváření kostry aplikace ze získaných údajů bez dialogových boxů použijeme tzv. zástupné funkce. Zástupné funkce jsou funkce, které mají definovanou pouze hlavičku a vrací pouze jméno funkce, případně popis co bude funkce v budoucnu dělat. Tento postup nám umožní testovat jednotlivé části výsledné nadřazené funkce aniž bychom museli mít hotovou celou aplikaci..
(defun zastupna_fce1 () (princ "zastupna_fce1") )
Funkce definuje příkaz SObjekty po jehož zadání bude uživatel požádán o zadání potřebných údajů pro vykreslení zvoleného obrazce.
(defun c:SObjekty (/ id co_delat) - tělo funkce )
Jelikož veškeré zadávání hodnot bude realizováno pomocí příkazového řádku nebo uživatelského dialogového panelu, nadefinujeme si zástupnou funkci pro nastavení způsobu zadávání požadovaných hodnot:
(defun so:zpusob_zadani() (princ "Tady bude v budoucnu rozhodovací funkce.") )
V předchozí ukázce kódu si všimněte prefixu so: ve jménu funkce so:zpusob_zadani(). Prefix je vhodné uvádět při zadávání funkcí, které přísluší k nějaké nadřazené aplikaci. V našem případě signalizuje, že funkce so:zpusob_zadani() je volána z funkce SObjekty(). Tato maličkost však může značně urychlit orientaci ve výsledném kódu.
Zástupná funkce pro dialogový box so:dialog(), bude mít následující definici:
(defun so:dialog() (princ "Tady bude v budoucnu dialogový box") )
Zadávání hodnot od uživatele bude realizováno pomocí funkce so:zadej_hodnoty(). Do naší kostry aplikace si tedy doplníme následující fragment kódu:
(defun so:zadej_hodnoty() (princ "Tady bude v budoucnu zadání hodnot od uživatele") )
Hodnoty získané od uživatele přiřadíme do globální proměnné gl_pam_hodnoty. Po přiřazení hodnot musíme zjistit co uživatel požadoval vykreslit a následně zavoláme odpovídající funkci so:kresli_nuhelnik() nebo so:kresli_kruznici(). Obě tyto funkce budou volány s proměnou gl_pam_hodnoty.
(defun so:kresli_nuhelnik () (princ "Tady bude v budoucnu vykreslení n - úhelníků") ) (defun so:kresli_kruznici() (princ "Tady bude v budoucnu vykreslení kružnic") )
Hlavní body kostry funkce:
Vlastní kód kostry hlavní funkce:
(defun c:SObjekty () ;;; definice nové funkce kresli (setq zadani (so:zpusob_zadani)) ;;; nastavení proměnné určující jakým způsobem ;;; se mají zadat informace (if (= zadani "prikaz") (if (= (so:zadej_hodnoty) T) (so:vykresli) ;;; vykreslení požadovaného objektu, v případě ;;; že byly zadány hodnoty ) ) (if (= zadani "dialog") ;;; zavolání dialogového boxu (if (= (so:dialog) T) (so:vykresli) ;;; vykreslení požadovaného objektu ) ) (princ "Funkce c:SObjekty právě dokončila činnost") ;;; informace o ukončení funkce (princ) )
Uživatel si může po napsání výše uvedených fragmentů vyzkoušet přeložení napsané funkce. V případě, že nechcete psát uvedený kód aplikace je zde k dispozici zdrojový kód kostry aplikace a zástupných funkcí.
Při spuštění funkce zatím neproběhnou nijak zajímavé akce, ale je demonstrováno použití zástupných funkcí.