明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1866|回复: 1

[基础] 关于自定义函数的学习总结

  [复制链接]
发表于 2014-7-11 19:10:26 | 显示全部楼层 |阅读模式
本帖最后由 wzg356 于 2014-7-12 09:05 编辑

关于自定义函数的学习总结
主要是对函数的结构形式(合法性)进行总结
源于对ll-j发帖子的学习
http://bbs.mjtd.com/forum.php?mo ... y%3Dlastpost&page=4
函数到底是什么?就那一个表达式,放在需要出现的时候能被解释器接受
这个表达式以参数声明为前导,后面再带一串AutoLISPAutoLISP 表达式。
当这个表达式无参数时,也必须在相应位置声明为nil或()


看看以下七句都有效定义了函数bb
你会发现,它们的相貌或者结构基本相似:(构建函数方法+函数名称+变量声明+表达式)
其中变量声明+表达式 是函数的实体内容,它根据构建函数方法 写法有略有差别

(defun  bb  (x / y)(setq y 2)(+ x y))

(setq   bb  (lambda(x / y)(setq y 2)(+ x y)))

(set    'bb  (lambda(x / y)(setq y 2)(+ x y)))

(setq   bb  (quote ((x / y)(setq y 2)(+ x y))))

(set    'bb  (quote ((x / y)(setq y 2)(+ x y))))

(setq   bb  '((x / y)(setq y 2)(+ x y)))

(set    'bb  '((x / y)(setq y 2)(+ x y)))



函数的执行
command:(bb 8)=>10;调用函数名称
command:('((x / y)(setq y 2)(+ x y)) 8)=>10;直接调用函数实体——表达式
command:((lambda(x / y)(setq y 2)(+ x y)) 8)=>10;直接调用函数实体——表达式
command:((quote ((x / y)(setq y 2)(+ x y))) 8)=>10;直接调用函数实体——表达式


"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2014-7-12 11:31:00 | 显示全部楼层
本帖最后由 wzg356 于 2014-7-12 11:34 编辑

沙发自己坐

无参数函数,变量声明位置必须有nil或()
(defun  bb  nil(alert "你好!"));(defun  bb  ()(alert "你好!"))

(setq   bb  (lambda nil(alert "你好!")))

(set    'bb  (lambda nil(alert "你好!")))

(setq   bb  (quote (nil(alert "你好!"))))

(set    'bb  (quote (nil(alert "你好!"))))

(setq   bb  '(nil(alert "你好!")))

(set    'bb  '(nil(alert "你好!")))

执行
command:(bb);效果都一样,该函数只有一个动作(alert "你好!"),返回nil.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 11:43 , Processed in 0.190613 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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