明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7852|回复: 15

【函数】赋值与定义

    [复制链接]
发表于 2012-12-10 13:44:07 | 显示全部楼层 |阅读模式
请看下面的一句代码,谁知道说的是什么?

  1. (set (read (strcat "a" "B")) (lambda(x) (* x 2)))













AutoLisp中,定义一个用户函数使用defun,而对变量赋值使用setq或set,setq和set又有不同,看帮助文件,setq比较好理解,但set就有点让人糊涂了,不过说白了其实也很简单,就是可以对“计算出来的”变量名赋值。
在回来说上面的代码,换一个方式可以写成:
(setq ab (lambda(x) (* x 2))
这还是一个赋值的概念,那么,再换一个写法:
(defun ab(x) (* x 2))
这回容易看了吧?其实就是定义了一个函数,不信你输入“(ab 3)”试试。
再来两句代码:
(defun ab(x) (* x 2))
(setq ac ab)
这时,你再输入“(ac 3)”试试。
其实,不管是赋值还是定义,其实都有相通之处,这个相通之处就是都是对一个变元名进行赋值,只不过赋值的内容有不同,defun是赋值一个计算过程(函数),而setq和set则更擅长赋值一个值或简单计算。

好了,不多说了,最后要说的是,新手往往不太在意变量与函数,所以会有变量名和函数名冲突的问题,导致程序出错或运行失败,而很多朋友即使知道函数名和变量名不能重复,却也不知所以,因而,弄句代码,给还不太清楚的朋友理解一二,其实没有多少实际用途,趣味而已。

评分

参与人数 6明经币 +3 金钱 +30 收起 理由
at1636 + 5 很给力!
重慶崽兒 + 1 终于真正理解到了,再次谢谢!
bzhjl + 20 赞一个!
自贡黄明儒 + 1 很给力!
wowan1314 + 5 有趣。有味。很好。很强大。
革天明 + 1

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

 楼主| 发表于 2016-11-4 09:53:16 | 显示全部楼层
ysq101 发表于 2014-3-31 23:36
哈哈。。。。果然很经典
来点新手对defun和setq见解
defun自定义函数也就是返回括号最后一个值

很久前的帖子也能翻出来。
好久不太研究Lisp了,也就不多说了,只提醒一下,有时候不要只注意返回值,要理解整个过程。
你也可以看看我签名中的另一个帖子:认识自定义函数,这里面都是我对函数的理解,讲得更全面一些。
发表于 2018-3-23 13:15:27 | 显示全部楼层
(set (read (strcat "a" "b")) (lambda(x) (* x 2)))
(setq ab (lambda(x) (* x 2)))
(defun ab(x) (* x 2))
是一样的!

命令: !aB
#<SUBR @000000003345e1b0 -lambda->
命令: (type aB)
SUBR
命令: (aB 3)
6
发表于 2012-12-10 14:02:36 | 显示全部楼层
顶楼主,谢谢楼主分享
发表于 2012-12-10 14:49:35 | 显示全部楼层
讲得很好,其实这样既有实例又有心得或体的讲解,要比看帮助文件有更大的“帮助”
发表于 2012-12-10 16:35:51 来自手机 | 显示全部楼层
讲的好,,,,,,,
发表于 2013-1-8 18:09:42 | 显示全部楼层
好玩,有意思,讲的好.
发表于 2013-1-16 15:10:12 | 显示全部楼层
讲得好,支持了
发表于 2013-1-16 16:21:36 | 显示全部楼层
楼主总结的很好,差一步就伸入到了本质,其实就是指针的概念。
发表于 2013-3-22 19:24:59 | 显示全部楼层
好帖子,学习了!
发表于 2013-8-30 18:44:45 | 显示全部楼层
顶,简洁明了,很好很强大!
发表于 2013-12-18 22:30:15 | 显示全部楼层
受教了,谢谢楼主分析!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-27 04:27 , Processed in 0.215429 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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