明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 145|回复: 5

[讨论] 中文变量名赋值冲突

[复制链接]
发表于 昨天 20:31 | 显示全部楼层 |阅读模式
本帖最后由 zgs378530220 于 2025-7-19 20:33 编辑

    1. (foreach x '("背部竖杆" "走道前杆" "走道连杆" "走道后杆" "顶部前杆" "顶部连杆" "顶部后杆" "底部前杆" "底部连杆" "底部后杆")  (set (read x) 第一背条))         
    2. (foreach x '("走道斜杆" "走道踏杆" "第二背条")  (set (read x) ""))
    复制代码

  • 请问在lisp中怎么避免中文错乱,以上变量底部后杆被识别为走道斜杆;
  • 如果改为英文,就能正确赋值,但是变量名我有用于DCL的label值。

回复

使用道具 举报

发表于 昨天 20:34 | 显示全部楼层
“变量名我有用于DCL的label值”让数值顺序和LABEL顺序一致就行了
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 20:52 来自手机 | 显示全部楼层
llsheng_73 发表于 2025-7-19 20:34
“变量名我有用于DCL的label值”让数值顺序和LABEL顺序一致就行了

我先定义了“底部后杆”这个变量,但是竟然识别为“走道斜杆”的值,用read来赋值,会出现这个问题,之前是直接(setq 底部后杆 第一背条)就正常显示,
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 20:53 来自手机 | 显示全部楼层
不知道是不是read解析的问题
回复 支持 反对

使用道具 举报

发表于 昨天 21:53 | 显示全部楼层
汉字会被转码识别,而汉字又会被分解为两个hex,所以,如果汉字变量的第一个hex落在同一个区,变量的指针会相互覆盖,这也是为啥不推荐用汉字做变量。
回复 支持 反对

使用道具 举报

发表于 9 小时前 | 显示全部楼层
zgs378530220 发表于 2025-7-19 20:52
我先定义了“底部后杆”这个变量,但是竟然识别为“走道斜杆”的值,用read来赋值,会出现这个问题,之前 ...

关于中文符号的使用问题,有好几篇帖子都提到过,都是建议要尽可能避免。
这里同样不建议试图解决中文符号的问题,而是建议换一个思路:首先,dcl的label不宜作为变量,建议用key更直观也更直接,毕竟对控件的操作都是通过key来实现的,比如赋初值,确定后取得各个控件的值,修改关联控件的状态等;另外,对相关的key的初值可以用一个表来包含它们,不管是对变量赋值还是初始化控件都很方便
比如(mapcar'set_tile (list "key1""key2"...)(list value1 value2 ...)),假如要把value的值给key同名的变量,(mapcar'(lambda(x y)(set(read x)y)) (list "key1""key2"...)(list value1 value2 ...))

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-20 12:56 , Processed in 0.178296 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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