千秋雪 发表于 2017-12-11 20:24:19

让全局变量释放为 nil

本帖最后由 千秋雪 于 2017-12-11 20:24 编辑

(defun c:tt (/ a)
(if (= b nil) (setq b 100))
(setq a (getreal (strcat "\n a值<" b ">:")))
(if (= a nil) (setq a b))

(setq b a);将 a值赋予 b,保留状态,方便使用

(if (= a 0) (setq b nil));有时想将全局变量 b释放掉,复归为nil,此时a以值 输入为0为条件,不知这样可不可行?
(princ)
)

另外,非常奇怪,这段代码第一行就出错 ,参数类型错误: stringp 1,不知问题出在那里?

自贡黄明儒 发表于 2017-12-11 20:30:32

应该是第二行出错。
(strcat "\n a值<" b ">:"),第一行b=100是数字,strcat不行的。

vectra 发表于 2017-12-11 20:30:45

b可能是nil或浮点数
第3行应改为
(setq a (getreal (strcat "\n a值<" (rtosb) ">:")))

千秋雪 发表于 2017-12-11 21:35:53

多谢楼上两位指正

LIULISHENG 发表于 2018-2-5 16:00:39

学习了

llsheng_73 发表于 2018-2-6 10:51:33

(setq a (getreal (strcat "\n a值<" (VL-PRINC-TO-STRING b) ">:")))

VL-PRINC-TO-STRING 可以无视变量有没值和它的类型
页: [1]
查看完整版本: 让全局变量释放为 nil