[I](setq items (mapcar '(lambda(e) (mapcar 'vlax-variant-value e)) items))[/I]
mapcar 只能作用于表,所以这里的items必为表。中间的
'(lambda(e) (mapcar 'vlax-variant-value e))为函数, e 为局部变量
(mapcar '(lambda(e) (mapcar 'vlax-variant-value e)) items))是把表items中的每一项送进中间的函数中(代入e)处理后的返回结果再送回items的原来的位置中
现在看函数'(lambda(e) (mapcar 'vlax-variant-value e)). 许不大恰当,但你可以假设你已在某处定义了如下一个函数:
(defun lambda (e) (mapcar 'vlax-variant-value e)), 而你现在可以将
(mapcar '(lambda(e) (mapcar 'vlax-variant-value e)) items))简单看成
(mapcar 'lambda items),深入一层看(mapcar 'vlax-variant-value e), 显然e也是表,这个表达式的意思是把e中的每一个原子都送函数vlax-variant-value处理后送回原来的位置。
假如:
(setq varstr (vlax-make-variant "ghost"))
(setq varint (vlax-make-variant 5 vlax-vbInteger))
(setq e (list varstr varint))
(mapcar 'vlax-variant-value e)则返回("ghost" 5)
记住, e 为items中的每一个原子。
假如:(setq items (list (list varstr varint) (list varint varstr)))
(mapcar '(lambda(e) (mapcar 'vlax-variant-value e)) items)则返回
(("ghost" 5) (5 "ghost"))
Sorry,会不会越抹越黑? |