lisp 變數的作用域
lisp 的變數 作用域是 lexical scoping 的
我們看看下面的程式碼:
CL-USER> (setf c 'global-c)
; in: SETF C
; (SETF C 'GLOBAL-C)
; ==>
; (SETQ C 'GLOBAL-C)
;
; caught WARNING:
; undefined variable: C
;
; compilation unit finished
; Undefined variable:
; C
; caught 1 WARNING condition
GLOBAL-C
CL-USER> (defvar *d* 'global-d)
*D*
CL-USER> (defun fn() *b*)
STYLE-WARNING: redefining COMMON-LISP-USER::FN in DEFUN
FN
CL-USER> fn
; Evaluation aborted on #.
CL-USER> (fn
)
GLOBAL-B
CL-USER> (let (( c 'local-c)
(*d* 'local-d))
(list c *d* (fn) (symbol-value 'c) (symbol-value '*d*)))
(LOCAL-C LOCAL-D GLOBAL-B GLOBAL-C LOCAL-D)
CL-USER>
看結果不解釋
我們看看下面的程式碼:
CL-USER> (setf c 'global-c)
; in: SETF C
; (SETF C 'GLOBAL-C)
; ==>
; (SETQ C 'GLOBAL-C)
;
; caught WARNING:
; undefined variable: C
;
; compilation unit finished
; Undefined variable:
; C
; caught 1 WARNING condition
GLOBAL-C
CL-USER> (defvar *d* 'global-d)
*D*
CL-USER> (defun fn() *b*)
STYLE-WARNING: redefining COMMON-LISP-USER::FN in DEFUN
FN
CL-USER> fn
; Evaluation aborted on #
CL-USER> (fn
)
GLOBAL-B
CL-USER> (let (( c 'local-c)
(*d* 'local-d))
(list c *d* (fn) (symbol-value 'c) (symbol-value '*d*)))
(LOCAL-C LOCAL-D GLOBAL-B GLOBAL-C LOCAL-D)
CL-USER>
看結果不解釋
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-764845/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JS變數作用域JS變數
- SCSS 變數作用域CSS變數
- golang變數作用域Golang變數
- java中變數的作用域Java變數
- python變數與變數作用域Python變數
- PL/SQL變數作用域SQL變數
- LoadRunner變數作用域變數
- 現代 JavaScript 的變數作用域JavaScript變數
- Go語言中的變數作用域Go變數
- Shell變數的作用域問題變數
- 變數的作用域--js閉包變數JS
- 理解 Javascript 中變數的作用域JavaScript變數
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- 變數物件與作用域鏈變數物件
- JavaScript中變數和作用域JavaScript變數
- JavaScript之變數及作用域JavaScript變數
- Go 語言變數作用域Go變數
- JavaScript變數作用域之殤JavaScript變數
- Go 中的動態作用域變數Go變數
- 注意for迴圈中變數的作用域變數
- c++臨時變數的作用域C++變數
- 函式(三)作用域之變數作用域、函式巢狀中區域性函式作用域、預設值引數作用域函式變數巢狀
- 變數、作用域與記憶體變數記憶體
- ES6(二: 變數作用域)變數
- js中變數作用域問題JS變數
- Java 8 之 lambda 變數作用域Java變數
- PHP 變數的四大作用域PHP變數
- CSS變數的作用域和預設值CSS變數
- 變數的作用域最小化原則變數
- golang變數作用域問題-避免使用全域性變數Golang變數
- ES6 變數作用域總結變數
- Python 函式和變數作用域Python函式變數
- 11-程式碼塊和變數的作用域變數
- 關於JS中變數的作用域-例項JS變數
- Go基礎知識-02 作用域 常量 變數 作用域(持續更新)Go變數
- 原型模式故事鏈(5)--JS變數作用域、作用域鏈、閉包原型模式JS變數
- 酒店房間和 C++ 區域性變數的作用域C++變數
- javascript基礎(函式與方法的區別,變數作用域,變數和函式的宣告提前,函式作用域)(十五)JavaScript函式變數