(eval expr) | ||
Argumenty: | ||
expr
|
- výraz, který má být vyhodnocen | |
Popis: | ||
- zjistí výsledek AutoLISPovské funkce | ||
Návratová hodnota: | ||
- výsledek vyhodnocení | ||
Příklady: | ||
Nejprve nastavíme proměnné: | ||
(setq a 123) | ||
(setq b 'a) | ||
Vyhodnocení výrazů: | ||
(eval 4.0) | vrací 4.0 | |
(eval (abs -10)) | vrací 10 | |
(eval a) | vrací 123 | |
(eval b) | vrací 123 |
(lambda arguments expr...) | ||||||
Argumenty: | ||||||
arguments
|
- argumenty předané výrazu | |||||
expr
|
- výraz AutoLISPu | |||||
Popis: | ||||||
- definice anonymní funkce | ||||||
Poznámka: | ||||||
- používá se když není potřeba definovat funkci (pomocí defun) | ||||||
- umožňuje umístit funkci na místo použití | ||||||
- často se používá ve spojení s funkcemi apply a/nebo mapcar | ||||||
Návratová hodnota: | ||||||
- hodnota poslední expr | ||||||
Příklady: | ||||||
Použití lambda funkce v konzole Visual LISPu: | ||||||
_$ (apply '(lambda (x y z) | ||||||
(* x (- y z)) | ||||||
) | ||||||
'(5 20 14) | ||||||
) | ||||||
vrací 30 | ||||||
_$ (setq counter 0) | ||||||
(mapcar '(lambda (x) | ||||||
(setq counter (1+ counter)) | ||||||
(* x 5) | ||||||
) | ||||||
'(2 4 -6 10.2) | ||||||
) | ||||||
vrací (10 20 -30 51.0) |
(progn [expr]...) | |||||
Argumenty: | |||||
expr
|
- jeden nebo víc AutoLISP výrazů | ||||
Popis: | |||||
- vyhodnocuje každý výraz sekvenčně a vrací hodnotu posledního výrazu | |||||
Poznámka: | |||||
- používá se, když potřebujeme vypočítat více výrazů a je očekáván pouze jeden výraz | |||||
Návratová hodnota: | |||||
- výsledek posledního výrazu | |||||
Příklady: | |||||
Funkce if provede jeden výraz then v případě splnění podmínky, potřebujeme-li provést dva výrazy použijeme funkci progn: | |||||
(if (= a b) | |||||
(progn | |||||
(princ "\nA = B ") | |||||
(setq a (+ a 10) b (- b 10)) | |||||
) | |||||
) |
(trace [function...]) | ||||||||
Argumenty: | ||||||||
function
|
- jméno funkce, není-li uvedeno nemá funkce trace žádný efekt | |||||||
Popis: | ||||||||
- pomůcka při ladění v AutoLISPu, nastaví flag pro specifikovanou funkci | ||||||||
- když je specifikovaná funkce volaná - trace zobrazí informace o funkci a výsledek funkce | ||||||||
- informace jsou zobrazeny do příkazové řádky AutoCADu nebo trace okna VisualLISPu | ||||||||
Poznámka: | ||||||||
- na vypnutí flagu trace je nutné použít funkci untrace | ||||||||
Návratová hodnota: | ||||||||
- jméno poslední funkce poslané trace | ||||||||
- nil - neobsahuje-li funkce trace žádné argumenty | ||||||||
Příklady: | ||||||||
Definujeme funkci se jménem foo a nastavíme trace flag pro tuto funkci | ||||||||
(defun foo (x) (if (> x 0) (foo (1- x)))) | ||||||||
(trace foo) | ||||||||
Vyvoláme funkci foo | ||||||||
(foo 3) | ||||||||
Entering (FOO 3) | ||||||||
Entering (FOO 2) | ||||||||
Entering (FOO 1) | ||||||||
Entering (FOO 0) | ||||||||
Result: nil | ||||||||
Result: nil | ||||||||
Result: nil | ||||||||
Result: nil | ||||||||
Vynulování trace flagu - zavoláme untrace | ||||||||
(untrace foo) |
(defun-q sym ([arguments] [/ variables...]) expr...) | ||
Argumenty: | ||
sym
|
- pojmenování funkce | |
arguments
|
- jména argumentů funkce | |
/ variables
|
- jména jednoho nebo více lokálních proměnných funkce, pozor / musí být oddělen mezerou | |
expr
|
- libovolný výraz (posloupnost výrazů) AutoLISPu | |
Poznámka: | ||
- AutoLISP obsahuje tuto funkci v důsledku zpětné kompatibility | ||
- nejsou-li deklarovány žádné argumenty ani lokální proměnné musí se uvést prázdné závorky | ||
- v případě duplikované deklarace argumentu nebo jména funkce AutoLISP použije první a ignoruje ostatní deklarace | ||
Popis: | ||
- definování funkce jako seznam | ||
Příklady: | ||
_$ (defun-q my-startup (x) (print (list x))) | ||
vrací MY-STARTUP | ||
_$ (my-startup 5) | ||
vrací (5) (5) | ||
Použití funkce defun-q-list-ref pro zobrazení struktury my-startup: | ||
_$ (defun-q-list-ref 'my-startup) | ||
vrací ((X) (PRINT (LIST X))) |
Podívej se na defun-q-list-ref a defun-q-list-set.
(defun-q-list-ref 'function ) | ||
Argumenty: | ||
'function
|
- jméno funkce | |
Popis: | ||
- funkce zobrazí strukturu funkce definované funkcí defun-q | ||
Návratová hodnota: | ||
- seznamová definice funkce | ||
- nil - není-li argument seznam | ||
Příklady: | ||
Definujeme funkci za použití defun-q funkce: | ||
_$ (defun-q my-startup (x) (print (list x))) | ||
vrací MY-STARTUP | ||
Použití funkce defun-q-list-ref pro zobrazení seznamové struktury my-startup: | ||
_$ (defun-q-list-ref 'my-startup) | ||
vrací ((X) (PRINT (LIST X))) |
Podívej se na defun-q a defun-q-list-set.