LISP 6.3 动态变量
来源:互联网 发布:美图秀秀 淘宝 编辑:程序博客网 时间:2024/05/17 23:59
词法绑定与赋予新值仅会影响当前作用域
词法绑定案例
CL-USER> (defvar *x* 10)*X*CL-USER> (defun foo() (format t "x:~a~%" *x*))FOOCL-USER> (foo)x:10NILCL-USER> (defun bar() (foo) (let ((*x* 20)) (foo)) (foo))BARCL-USER> (bar)x:10x:20x:10NIL
赋予新值案例
;;;修改foo函数之后再次执行CL-USER> (defun foo() (format t "Before assignment~18tX:~d~%" *x*) (setf *x* (+ 1 *x*)) (format t "After assignment~18tX:~d~%" *x*))FOOCL-USER> (foo)Before assignment X:10After assignment X:11NILCL-USER> (bar)Before assignment X:11After assignment X:12Before assignment X:20After assignment X:21Before assignment X:12After assignment X:13NIL
对作用域的案例测试
注:
(rotatef a b) 将两个变量值互换
(shiftf a b 10)值向左移动
1与2进行对比
1.
CL-USER> (defun foo(a b) (let ((a 2) (b 5))) (rotatef a b) (format t "~a~t~a" a b));Compiler warnings :; In FOO: Unused lexical variable B; In FOO: Unused lexical variable AFOOCL-USER> (foo 3 7 )7 3NIL
2.
CL-USER> (defun foo(a b) (let ((a 2) (b 5)) (rotatef a b) (format t "~a~t~a" a b)));Compiler warnings :; In FOO: Unused lexical variable B; In FOO: Unused lexical variable AFOOCL-USER> (foo 3 7 )5 2NIL
CL-USER> (defun foo(a b) (let ((a 2) (b 5)) (rotatef a b) (format t "~a~t~a~%" a b) (shiftf a b 10) (format t "~a~t~a~%" a b)));Compiler warnings :; In FOO: Unused lexical variable B; In FOO: Unused lexical variable AFOOCL-USER> (foo 3 7 )5 22 10NIL
- LISP 6.3 动态变量
- Common Lisp 中动态作用域变量
- Lisp 变量
- lisp中的变量
- Common Lisp变量的基础知识
- LISP 6.1 变量的基础
- 深入了解lisp(clojure)-变量
- Lisp一瞥:增强型变量Symbol
- Common Lisp语法——变量
- Common Lisp学习之三:使用变量
- Lisp一瞥:增强型变量Symbol
- Lisp
- Lisp
- lisp
- LISP
- LISP
- lisp
- Lisp语言:变量以及变量的作用范围
- Button(按钮)监听
- 赛程安排问题
- cocos2d-x box2d物理引擎深入研究 第二篇之齿轮关节详解(b2GearJoint)
- VC 多线程
- Ubuntu13.04环境下载、编译Android源代码
- LISP 6.3 动态变量
- mysql 数据类型优化
- 2013年度中国优秀开源项目
- VC++界面编程之--获取父窗口背景画刷(附带时钟控件)
- OllyDBG 入门系列(七)-汇编功能
- 23个经典JDK设计模式
- 2011年Java EE生产力报告
- 遥信遥测遥控遥调四大概念介绍
- Android中Spinner的使用