at1636
发表于 2022-10-20 15:12:43
标记收藏,谢谢大佬无私分享
baitang36
发表于 2022-10-21 07:56:34
本帖最后由 baitang36 于 2022-10-21 07:59 编辑
"要说明的是,对于赋值为整数类型,lisp视作为立即数,即使你用内部方式改变了某个值,复制的符号的值并不会发生改变。
也就是说(setq a 3) ,(setq b a) 当你即使用内部方法修改a的数值,b的数值依然不变。"
对于小整数,数值小于1G,高大侠的说法是正确的,但对于大整数,数值大于1G,它也会变成引用。
小整数在内存中直接存储2n+1,它是直接存放在符号的值中的,比如(setq a 1),1这个数值变成3放到符号a的value中。
lsp使用引用带来的好处也是有的,比较两个字符串是否相等,只需要看是不是指向了同一个字符串,而不需要逐个字节去对比,速度飞快。
ivde
发表于 2022-10-21 11:07:43
本帖最后由 ivde 于 2022-10-21 11:08 编辑
baitang36 发表于 2022-9-11 16:32
lisp有点歧视汉字,用保留函数计算hash值时,并未把汉字计算在内。因此你改了汉字并不会影响hash值。
autolisp 是 ANSI,不是UNICODE
vl-string->list
vl-list->string
kevinying16
发表于 2022-11-15 12:29:34
大神威武,感谢分享
ZYX2129
发表于 2022-12-4 16:21:50
谢谢大佬的分享!!!!
xiongkun
发表于 2022-12-4 16:53:44
学习了 感谢大佬分享
happyxt
发表于 2022-12-13 23:26:31
全是干货,收获很大,感谢大佬解惑。果断收藏防雷。
xyp1964
发表于 2023-3-28 08:35:57
;; (IntSort '(2 6 2 4 5 7 5)) → (2 2 4 5 5 6 7)
(defun IntSort(lst)(mapcar'(lambda(x)(nth x lst))(vl-sort-i lst'<)))
yu960312
发表于 2023-4-9 07:04:06
感谢大佬,又学到了一招
帝都划水王
发表于 2023-5-5 09:19:43
研究的真是深入啊。小白先看看