AutoLISP:如何更优雅地从嵌套列表中提取指定字符串?
更优雅的AutoLISP嵌套列表元素提取方案
针对你从嵌套列表 (("FullName") ("Larry Paige")) 提取第二个字符串的需求,有几种更符合AutoLISP惯用写法的优化方案:
简化基础写法:用
car替代nth 0,car是AutoLISP中专门获取列表首个元素的原生函数,代码更简洁地道:(setq _BAMOFO (car (nth 1 Result)))解构式提取(适配固定结构):如果你的嵌套列表固定是多个单元素子列表的结构,可以先把所有子列表的首个元素提取为一维列表,再直接取目标位置的元素:
;; 先将嵌套列表转为一维列表:("FullName" "Larry Paige") (setq flat-list (mapcar 'car Result)) ;; 提取第二个元素 (setq _BAMOFO (nth 1 flat-list)) ;; 合并成一行写法 (setq _BAMOFO (nth 1 (mapcar 'car Result)))这种写法的优势是如果后续需要提取其他位置的元素,直接修改
nth的索引即可,扩展性更强。更简洁的链式调用:结合
cadr(等价于car (cdr ...)),如果已经通过mapcar转成一维列表,还可以写成:(setq _BAMOFO (cadr (mapcar 'car Result)))
这些方案都比原写法更符合AutoLISP的编程习惯,可读性和简洁性都有提升。
内容的提问来源于stack exchange,提问作者Kyle Fleming
相关产品推荐
相关产品推荐

