Ассоциативный список - это просто список списков, у которых 1-й элемент является ключом. Пример - dxf коды в Автокаде. Нарисуй отрезок и набери в командной строке
(entget(entlast)). Увидишь что-то похожее
Цитата:
((-1 . <Имя объекта: 7ef92690>) (0 . "LINE") (330 . <Имя объекта: 7ef90d08>) (5
. "2DB2") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbLine") (10 331.511 226.191 0.0) (11 439.551 198.487 0.0) (210 0.0 0.0 1.0))
|
Первые элементы - это dxf коды примитива, он же ключ.
Поиск нужных данных осуществляет функция
assoc, замену -
subst
Я знаю, что в списке с ключом 8 находится имя слоя, тогда
Цитата:
Команда: (assoc 8 (entget(entlast)))
(8 . "0")
|
вернет мне список с ключом, а второй элемент - это нужное мне имя слоя
Ключом (первым элементом) может быть и строка. Assoc чувствительна к регистру.
Цитата:
Команда: (setq lst (list (list 1 "Первый") '(2 "Второй")(list 3 10)(list "first" "Тоже первый")))
((1 "Первый") (2 "Второй") (3 10) ("first" "Тоже первый"))
Команда: (assoc 1 lst)
(1 "Первый")
Команда: (assoc "first" lst)
("first" "Тоже первый")
Команда: (assoc 3 lst)
(3 10)
|
В общем то вот и весь материал