Zobrazit plnou verzi příspěvku: asociacni seznam

pavlacka
28.04.2005, 00:20
Dobry den,
Vytvarim asociacni seznam neco jako (setq seznam '((MOD "1") (NAZEV "aaaa") (POCET  10) ...) )
lze nejak misto hodnot  "1", "aaaa", 10 ... pouzit PROMENNE?
Dekuji za odpoved.
roman pavlacka

Vladimír Michl
28.04.2005, 08:25
Jak to myslíte? Při vytváření seznamu (list) nebo spíše (cons) můžete použít hodnoty proměnných. Pokud chcete získat aktuální hodnoty proměnných při asociování, musíte použít něco jako(eval(cdr(assoc 'POCET seznam))) a v seznamu mít .... (POCET nazevpromennenebofunkce) ...

pavlacka
28.04.2005, 13:42
Mate pravdu,
vyjadril jsem se trochu nepresne, pokusim se to napravit. Potrebuji vytvorit tento dvourozmerny seznam:
 ((MOD "1") (NAZEV "aaaa") (POCET  10) ...),
ale hodnoty "1", "aaaa", 10 mam v promenych c_mode, c_nazev, c_pocet ....
dekuji za radu
roman pavlacka

Vladimír Michl
28.04.2005, 13:55
aha, tak to je ten jednodušší případ - stačí použít funkci (list), resp. (list) a (cons)

pavlacka
28.04.2005, 15:05
Nevim, ale asi chci neco co je urcite trivialni, ale ja na to nemohu prijit a zabredavam do prilis slozitych konstrukci.
umim to kdyz hodnoty do seznamu zadam primo takto:
pripad A) vytvoreni seznamu  (setq seznam (list '(MOD "0") '(NAZEV "aaa") '(POCET 10)))   (setq seznam (cons '(PLOCHA 32.22) seznam)) ; pridani do seznamu na zacatek
pripad B) jde mi pak o nahrazovani hodnot u prislusnych navesti, tady konkretne u navest MOD  hodnotu "0" za "1"  (setq seznam (subst '(MOD "1") (assoc 'MOD seznam) seznam) )
neumim to v tomto pripade:
vytvorit stejny seznam jako v bode A) a provest nahradu v bode B), kdyz mam mam tu "0" i "1" i ty dalsi hodnoty v prommennych.
dekuji za radu
roman pavlacka
 

Seiner
28.04.2005, 15:12
Jestli to dobře chápu:
Příkaz: (setq a "0")"0"
Příkaz: (setq b (list 'MOD a))(MOD "0")
Příkaz: !b(MOD "0")

pavlacka
28.04.2005, 17:58
Ano,
Příkaz: (setq a "0")"0"
Příkaz: (setq aa "aaa")"aaa"
Příkaz: (setq b (list 'MOD a 'NAZEV aa))(MOD "0" NAZEV "aaa")
Příkaz: !b(MOD "0" NAZEV "aaa")
to funguje, ale ja potrebuji seznam ((MOD "0") (NAZEV "aaa"))
v tom predeslem se nedaji nahrazovat hodnoty takto, a navic tu "1" mam v promenne
Příkaz: (subst '(MOD "1") (assoc 'MOD a) a)
roman

Seiner
28.04.2005, 18:24
(ja to myslel jako navod a dal, že už je to jasne :-)
 
(setq b (list(list 'MOD a)(list 'NAZEV aa)))

pavlacka
28.04.2005, 18:49
Pane Seiner dekuji,
ne, ze bych byl uplny zacatecnik v programovani, ale prece jenom LISP nemam jeste uplne zazity a verim, ze narazim jeste na dalsi orisky.
pekny den,
roma pavlacka

Seiner
28.04.2005, 20:21
Rádo se stalo. Lost In a Sea of Parentheses taky používám jen když není zbytí. Spíš jsem se orientoval na VB. Seiner38470.853900463