lisp中用setq给变量赋值,有一个写法: (setq itm val itm (if itm itm 0)) 怎样理解?

lisp中用setq给变量赋值,有一个写法:
(setq itm var itm (if itm itm 0))
其中var是前面取得的值,这里要给itm赋值
这一句怎样理解?请高人指教

执行这一句的结果是这样的:如果var有东西(也就是不为空),那么itm=var,如果var没有东西(也就是nil),那么结果就是itm=0追问

谢谢您的答案
我想,这是一个简化写法
想知道它的完整写法是怎样的.
总觉得里面的if语句应该是:(if (null itm) (setq itm 0))
这样的话,我理解的if条件(null itm)和实际使用的条件itm就正好相反了

追答

是的,他的写法是传统LISP写法,这是与别的语言的区别,也是写LISP的乐趣之一,以下提供完整写法,供参考:(setq itm var)(if (= itm nil)(setq itm 0)) 或者也可以写成(if (= var nil)(setq itm 0) (setq itm var))--------

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-04
AutoCAD内嵌AutoLISP编程语言中的赋值函数。就是一个赋值用的,setq name value [name value],Name为变量名 Value为赋予变量的值。
相似回答