明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1398|回复: 7

[基础] 能用個副程式宣告多個變數嗎??

[复制链接]
发表于 2010-12-9 22:30:01 | 显示全部楼层 |阅读模式
本帖最后由 lead009 于 2010-12-9 22:32 编辑

能夠利用副程式,一次宣告出多個變數嗎??

例如用
(defun tt(a /)    ( if(= a 0)
     (progn
        (setq ang 0)
        (setq a 100)
        (setq b 100)
     )
     (progn
        (setq ang 100)
        (setq a 0)
        (setq b 0)
     )
  )
)


发表于 2010-12-10 09:01:51 | 显示全部楼层
本帖最后由 Andyhon 于 2010-12-10 09:04 编辑

  1. (defun tt (a)
  2.   (if (zerop a)
  3.     (setq ang 0
  4.             a 100
  5.             b 100
  6.     )
  7.     (setq ang 100
  8.             a 0
  9.             b 0
  10.   ) )
  11. )

  12. (defun C:test ()
  13.    .....
  14.    .....
  15.    (tt 0)    ; or (tt what)
  16.    .....
  17. )   
 楼主| 发表于 2010-12-10 11:41:35 | 显示全部楼层
我的意思是說,一個副程式最後只會有一個返回值
(setq xx(tt a));;呼叫副程式
像上面這種情況只能在主程式宣告一個xx變數

我想問說能否透過副程式,宣告n個變數,在主程式中使用??


发表于 2010-12-10 12:12:33 | 显示全部楼层
不是很理解您的問題

(tt 0)    ; or (tt what)

;; 列出變數值
(princ ang) (princ "\t")
(princ a) (princ "\t")
(princ b)

看看是否合您所求....
发表于 2010-12-10 21:25:58 | 显示全部楼层
可以用表一次返回多个变元
 楼主| 发表于 2010-12-12 21:46:40 | 显示全部楼层
恩,謝謝二位的解說
但是您說的表是(list a b c)

然後回到主程式,再用car cadr caddr n求得嗎?
发表于 2010-12-12 21:59:24 | 显示全部楼层
(mapcar 'set '(x y z) (tt ?))

X Y Z 就是你说的多个变元
 楼主| 发表于 2010-12-13 10:06:47 | 显示全部楼层
謝謝你的解說
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 16:31 , Processed in 0.179726 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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