samifox 发表于 2022-7-6 06:09:15

Set和Setq

你好
 
不知道有什么不同?

Lee Mac 发表于 2022-7-6 06:14:41

我一直认为这是议员的一个很好的解释。

samifox 发表于 2022-7-6 06:21:44

 
其实我更困惑了
 
为什么这一个会起作用:
 
; 错误:错误的参数类型:symbolp nil
_$ (mapcar 'set '(x y z) '(1 2 3))
(1 2 3)
 
但这叫
 

_$ (set d 1)
; error: bad argument type: symbolp nil
_$

Lee Mac 发表于 2022-7-6 06:24:26

 
链接帖子中的解释说明:
 
第一个示例相当于:
然而,在第二个示例中,符号d由集合函数求值(因为它没有被引用)。
因此,第二个示例的计算结果为:
如果符号d没有值,则为:
如您所述返回错误。
 
我链接的帖子中给出了一个类似的例子来解释同样的事情:
 
 
我建议你重新阅读这篇文章。

samifox 发表于 2022-7-6 06:32:15

所以set()函数无效
 
通过写作

(mapcar 'set '(x y z) '(1 2 3))

 
我用引号,所以它和setq一样
 
通过写作
6
 
我总是会出错,因为d可以为null或任何其他不可能赋值的值
 
你能告诉我set()函数可以在哪里使用吗?

Lee Mac 发表于 2022-7-6 06:33:47

 

samifox 发表于 2022-7-6 06:40:15

 
 
有什么不同?
 
7

Lee Mac 发表于 2022-7-6 06:45:08

 
在这种情况下没有区别-因为AutoLISP不关心空格,所以发布的表达式是相同的。

samifox 发表于 2022-7-6 06:46:41

在帮助中,他们在set()的页面中给出了setq()的示例代码?
你能举个例子说明集合(0)在哪里很方便吗?

Lee Mac 发表于 2022-7-6 06:53:18

 
一个简单的例子:排列变量
如果使用setq,相同的操作将需要松弛变量(c):
9
页: [1] 2
查看完整版本: Set和Setq