明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1446|回复: 13

[经验] nil 和""的区别

[复制链接]
发表于 2021-6-28 09:11 | 显示全部楼层 |阅读模式
有朋友在群里说,发现""与nil不等价,不能混用。
有什么区别呢,用程序试验一下:
(setq  a nil)
(setq b "")
(strlen b)
(length a)
这样都是返回0
但改成
(strlen a)
(length b)
会出错
; 错误: 参数类型错误: stringp nil
; 错误: 参数类型错误: listp ""

试验结果证明,nil是长度为零的表,""是长度为零的字符串
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2021-6-29 15:52 | 显示全部楼层
pengfei2010 发表于 2021-6-29 08:28
一个是猪一个是鸭,两个完全没关系的物种啊,这个严禁混用!

做一个猪蹄炖鸭掌
回复 支持 1 反对 0

使用道具 举报

发表于 2021-6-28 13:04 | 显示全部楼层
完全想不出来怎么可能混用,感觉任何情况下都没有办法混用,完全不同的两个东西,就算用于if判断或循环条件,""为真,nil为假,一个字符串,一个是表,数据类型也不同,这种问题不知道怎么提出来的
发表于 2022-4-22 07:16 来自手机 | 显示全部楼层
尘缘一生 发表于 2022-4-22 03:53
如果一个表中有nil 项,有删除的函数吗?

vl-remove可以删除表内所有Nil,
repeat循环,碰到第一个Nil就删除,可以删除表内第一个Nil。
发表于 2021-6-28 09:12 | 显示全部楼层
nil是长度为零的表,""是长度为零的字符串

不错的分析
发表于 2021-6-28 09:13 | 显示全部楼层
(setq  a nil)
可以用于任何变量的初始化
发表于 2021-6-28 09:14 | 显示全部楼层
大师的分析的到位,
发表于 2021-6-28 10:02 来自手机 | 显示全部楼层
我一般用nil
发表于 2021-6-28 10:06 来自手机 | 显示全部楼层
学习了,有道理
发表于 2021-6-28 15:24 | 显示全部楼层
感谢梳理,学习了!
发表于 2021-6-29 08:28 | 显示全部楼层
一个是猪一个是鸭,两个完全没关系的物种啊,这个严禁混用!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-17 18:41 , Processed in 0.212669 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表