Software: Apache/2.2.3 (CentOS). PHP/5.1.6 uname -a: Linux mx-ll-110-164-51-230.static.3bb.co.th 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44 uid=48(apache) gid=48(apache) groups=48(apache) Safe-mode: OFF (not secure) /usr/share/gimp/2.0/help/cs/ drwxr-xr-x | |
| Viewing file: Select action/file-type: Již umíte pracovat s proměnnými a funkcemi, je na čase vydat se za tajemstvím seznamů (anglicky lists, které tvoří důležitou součást Scheme. Dříve, než si o seznamech povíme více, musíte pochopit rozdíl mezi atomickými hodnotami a seznamy.
Atomické hodnoty jsme viděli již při inicializaci proměnných
v předchozí lekci. Atomická hodnota je jedna jediná hodnota.
Následujícím výrokem přiřadíme proměnné
(let* ( (x 8) ) x)
(Výraz
Proměnná může také odkazovat na seznam hodnot, ne na hodnotu jedinou.
Přiřadit proměnné
(let* ( (x '(1 3 5))) x)
Zkuste oba výroky ve Script-Fu konzoli a sledujte reakci. První výrok vrátí výsledek:
8
Druhý výrok však vrátí následující výsledek:
(1 3 5)
Odpověď 8 značí, že proměnná Syntaxe definice seznamu je následující:
'(a b c)
kde Prázdný seznam lze definovat následujícím způsobem:
'()
nebo jednodušeji:
()
Seznamy mohou obsahovat atomické hodnoty i další seznamy:
(let*
(
(x
'("The Gimp" (1 2 3) ("is" ("great" () ) ) )
)
)
x
)
Všimněte si, že za prvním apostrofem již není, pro vnitřní seznamy, apostrofy používat. Přepiště výrok do jedné řádky, vložte do Script-Fu konzole, vyzkoušejte a prohlédněte si výsledek.
Vrácený výsledek není seznam jednotlivých atomických hodnot, ale
obsahuje literál O seznamech je často užitečné přemýšlet jako o útvarech složených z hlavičky a ocásku (anglicky head a tail). Hlavička je první položka seznamu, zbývající položky tvoří ocásek. Bude to užitečné, až budeme mluvit o spojování seznamů a přístupu k jednotlivým prvkům seznamu.
Jedna z funkcí, se kterými se budete setkávat nejčastěji, je
funkce
(cons 1 '(2 3 4) )
Výsledkem je seznam Lze takto vytvořit i seznam s jedním prvkem:
(cons 1 () )
Místo kteréhokoliv literálu můžete samozřejmě použít dříve deklarovanou proměnnou.
Pro definici seznamu složeného z literálů a dříve deklarovaných
proměnných můžete použít funkci
(list 5 4 3 a b c)
Tak se vytvoří a vrátí seznam obsahující hodnoty proměnných
(let* (
(a 1)
(b 2)
(c 3)
)
(list 5 4 3 a b c)
)
Tento kód vytvoří seznam
K přistupování k hodnotám v seznamu slouží funkce
Funkce
(car '("prvni" 2 "treti"))
vrátí:
"prvni"
Funkce
(cdr '("prvni" 2 "treti"))
vrací:
(2 "treti")
zatímco následující:
(cdr '("one and only"))
vrací:
()
Výborně, již umíme získat první prvek ze seznamu i zbytek seznamu.
Jak ale přistupovat ke druhému, třetímu nebo jinému prvku seznamu?
K tomuto účelu existuje řada praktických funkcí, např. hlavička
hlavičky ocásku seznamu (
Konvence pro pojemnovávání takových to funkcí je velmi jednoduchá.
Písmena
(car (cdr (car x) ) )
lze jednodušeji zapsat jako:
(cadar x)
Úplný seznam funkcí pro práci se seznamy ve Script-Fu naleznete v příloze.
Abyste si funkce pro přístup k prvkům seznamu procvičili, zadejte
následující (ovšem, pokud používáte konzoli, na jednom řádku) a
zkoušejte si různé kombinace
(let* (
(x '( (1 2 (3 4 5) 6) 7 8 (9 10) )
)
)
; sem zapište svou car/cdr funkci
)
Pokuste se získat číslo tři pouze dvěma voláními funkce. Pokud se vám to podaří, možná se z vás stane Mistr Script-Fu!
|
:: Command execute :: | |
:: Shadow's tricks :D :: | |
Useful Commands
|
|
:: Preddy's tricks :D :: | |
Php Safe-Mode Bypass (Read Files)
|
|
--[ c999shell v. 1.0 pre-release build #16 Modded by Shadow & Preddy | RootShell Security Group | r57 c99 shell | Generation time: 0.013 ]-- |