找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 749|回复: 5

[求助]:LISP中定义函数的困难!

[复制链接]
发表于 2004-12-2 22:25:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
编了个小程序,第一了主函数和子函数,也定义了aa等临时变量,但某些临时变量非常有用,想能单独调出来使(是定义成单独的主函数--已经试过,不好使,555--还是有其它方法?)请兄弟们给予帮助,谢谢!

(defun c:mj(/ aa bb na nb)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-12-3 06:31:53 | 显示全部楼层
问题说得不太清楚,我试着回答,供参考。
首先,如果在函数中将变量“申明”为局部函数,则不会对其他的函数影响,但如果在同一函数中,或者在全部被当作全局变量时,如果变量同时被定义成不同性质则可能出错,就是说,在a函数中使用aa局部变量,此时可以在与a无关的函数中使用aa为全局变量,甚至也可以定义为函数,完全没有影响,但如果在a函数中将aa赋予一种类型,同时在a函数中(或者在与a函数有关联的c函数中)将aa变量赋予另一种类型(如数值和表、表和函数等),则会出错,有时甚至出现“致命错误”。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-8 08:28:49 | 显示全部楼层
原先刚开始接触LISP,说得不清楚,现举例说明:
1.
(defun c:mj(/ aa bb na nb)
……
)
(defun mjs(/ aa bb na nb)
……
)

2.
(defun c:tj(/ aa bb na nb)
……
)

假使有1.2两个LISP想,用2调用1中主函数或子函数的值,或者调用1中的函数,如何才能作到?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-8 15:54:35 | 显示全部楼层
不是一样的吗?什么叫临时变量啊??
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-12-8 18:13:54 | 显示全部楼层
最初由 xxxyzxx 发布
[B]原先刚开始接触LISP,说得不清楚,现举例说明:
1.
(defun c:mj(/ aa bb na nb)
……
)
(defun mjs(/ aa bb na nb)
……
)

2.
(defun c:tj(/ aa bb na nb)
……
)

假使有1.2两个LISP想,用2调用1... [/B]


调用其他程序的函数需要“加载”和“调用”,在程序中这样体现:
[php](defun c:tj(/ aa bb na nb)
  ...
  (load "mj")        ;加载,假定程序1名称为mj.lsp,并且在支持路径下
  (c:mj)         ;调用mj外部函数
  ...
  (mjs)         ;调用函数mjs
  ...
)[/php]
此时不必担心局部函数冲突(全局函数不能冲突),Lisp会将局部函数自动处理,你可以看看我在http://www.xdcad.net/forum/showt ... 1523305#post1523305 10楼中贴出的代码,看看a1、a2的变化过程。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-8 20:38:00 | 显示全部楼层
学习学习,全局变量和局部变量的确是很头疼的问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-23 14:25 , Processed in 0.279934 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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