干杯
我推荐李·麦克的这篇教程。
他在那里写的第一句话非常准确:
这本教程很棒,但你必须足够注意,并进行大量练习。
但一旦你习惯了,我基本上你已经学会了60%的LISP。
顺便说一句,这里有一些更通用的函数:
; Numbers all string keys in Assoc List
(defun NumberStrKeys ( aL / keys )
(cond
( (not (and (vl-consp aL) (vl-every 'vl-consp aL))) (prompt "NumberStrKeys: Invalid list.") )
(
(mapcar
(function
(lambda (L / k tmp i )
(if (eq 'STR (type (setq k (car L))))
(if (setq tmp (assoc k keys))
(if (setq i (cdr tmp))
(progn
(setq keys (subst (cons k (setq i (1+ i))) tmp keys))
(cons (strcat k "-" (itoa i)) (cdr L))
); progn
(progn (setq keys (cons (cons k 0) keys)) L)
); if
(progn (setq keys (cons (cons k 0) keys)) L)
); if
L
); if
); lambda
); function
aL
); mapcar
)
); cond
); defun NumberStrKeys
示例用法和输出:
(NumberStrKeys
'(
(1 "1" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "6" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "5" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "4" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
(2 "2" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("RECTAN" "2" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("SQUARE" "3" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("SQUARE" "2" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "3" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "2" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
(3 "3" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("SQUARE" "1" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "1" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("RECTAN" "1" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
)
)
>>
(
(1 "1" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "6" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle-1" "5" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle-2" "4" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
(2 "2" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("RECTAN" "2" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("SQUARE" "3" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("SQUARE-1" "2" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle-3" "3" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle-4" "2" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
(3 "3" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("SQUARE-2" "1" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle-5" "1" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("RECTAN-1" "1" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
) :干杯:
非常感谢m8
页:
1
[2]