Emacs Lisp 簡明教程github
進入scratch
緩存區,segmentfault
模式選擇 lisp-interaction-mode
緩存
(注: 能夠經過 m-x lisp-interaction-mode ret
切換模式)函數
(message "hello world")
(1) c-x c-e
spa
執行lisp代碼的命令爲 c-x c-e
, 即函數 eval-last-sexp
code
函數解釋以下:教程
執行光標以前的表達式ci
(2) c-j
,即函數 val-print-last-sexp
作用域
函數解釋以下:
執行光標以前的表達式,和c-x c-e
的不一樣之處是,執行結果不只在底部的mini buffer
中輸出,並且在 current buffer
中也會顯示
注意: 一次只會解釋執行一個表達式
函數由3個部分組成,
(1)函數名稱
(2)函數參數列表
(3)函數體
函數體和函數定義之間,能夠經過"doc string"
添加函數文檔
注意,
(1) 若是須要執行新定義的函數 hello-world
,須要先在函數定義結尾,執行c-x c-e
解析執行該新函數,不然會報錯
Debugger entered--Lisp error: (void-function hello-world)
(2) 當執行過函數定義後,光標在函數名時候,經過命令 c-h f
能夠查看該函數的文檔
setq
能夠經過 c-h v
查看變量的文檔
defvar
defvar
聲明變量,若是聲明的變量已經存在,則不會改變原值
因爲lisp
中的函數都是全局的,致使setq
定義的變量也容易變爲全局變量,
若是想要查看變量是否已經存在,能夠經過c-h v
查看是否已經定義
lisp
中可使用 let
指定局部做用域的變量
這時候,局部變量 pi
, area
定義在函數 circle-area
中,經過c-h v
沒法查看變量
let*
和 let
的使用方式相同,惟一區別是:
let*
中可使用以前定義的局部變量
lambda
表達式lambda
表達式賦值爲變量