1. 列表
用空格分開,以圓括號括起來的單詞,數字或者其它列表,如(+ 1 2)或者包括子列表的列表(+ 1 (+ 2 3))。
列表是emacs lisp(簡稱elisp)的基礎,所有的程式都是由列表組成的。在elisp裡,資料和程式都是以同樣的
方式表示。
2. 原子
在elisp中不可再分為更小的部分的東西稱為原子,比如數字,單詞,字串,elisp的原子種模擬較少,一般用到
的也就這幾種,列表由三種組成方式,由原子組成,由列表組成,由原子和列表組成,沒有任何原子的列表()稱為空
列表,它比較特殊,即是原子又是列表。
3. 符號表示式(symbolic expression)
原子和列表的書面表示都被稱為符號表示式。在elisp的列表中的空格數量可以任意,所以我們可以使用空格來排版
列表使我們易於閱讀
4. 表示式求值
表示式求值遵循下面簡單的規則
- 對數字求值就是它本身
- 對雙引號括起來的字串求值就是它本身
- 對乙個符號求值將返回它的值
- 對乙個列表求值,從左往右掃瞄列表,查詢繫結在第乙個符號上的函式定義,執行該函式定義,列表剩下的全部符號
作為該函式的引數,如果剩下的符號中還有列表,遞迴的使用本規則進行解析。
- 單引號告訴elisp返回表示式的書面形式,而不是對它求值,如'test返回test本身,而不是test變數的值
- 對乙個函式求值總是返回乙個值(除非返回乙個錯誤資訊),但是很多時候我們真正需要的其實是函式的附加效果,
如(next-line)我們對返回值其實不關心,我們想要的是附加效果。在其他一些語言中需要返回值的叫做函式,需要
附加效果的叫做過程。在elisp中我們不區分這兩者
- 特殊列表
特殊列表是求值方式或者目的和前面的列表求值有差異的列表,其實總體來說就是其它語言中的語法規則,在第5節中
介紹5. 特殊列表
- 給變數賦值
用得最多的有四種
- set
語法為(set 'flowers '(rose lily)),將flowers繫結到列表(rose lily)上。
- setq
和set基本一樣,除了第乙個引數不用加單引號,elisp自動給你加上單引號,使用方法為(setq flowers '(rose lily)),
效果和上面的set是一樣的,但是使用setq可以同時對多個變數賦值,第乙個引數繫結第二個引數,第三個繫結第四個,以此
類推。如(setq flowers '(rose lily) trees '(oak maple))
- let
let其實是使變數本地化,這樣在let範圍以外看不到let裡定義的變數,語法為
(let varlist body)
其中第二個部分varlist為乙個列表,表示變數定義,可以是單個原子,賦值為nil,也可以是乙個兩個部分組成的列表,表示
第乙個符號繫結在第二個符號求值後的結果上。第三部分為任意列表組成。
這個和其它語言中稱為語句塊很相
- 函式定義
用於定義函式,語法如下
(defun function-name (arguments)
"optional documentation"
(interactive arguments-passing-info)
body)
函式定義由五部分組成:
- 符號名,這個函式定義要繫結的符號
- 傳送給函式的引數列表,可以為空列表,表示沒有引數
- 描述文件,是可選的,但是最好認真填寫
- 是乙個函式成為互動函式的表示式,是可選的,沒有是乙個函式,有是乙個命令。命令表示可以在emacs裡使用m-x呼叫,或者
繫結鍵以後使用按鍵呼叫
- 函式定義的內容,該函式完成任務的**。
函式的安裝,如果是單個函式的安裝可以在函式的最後乙個括號後c-x c-e安裝
對於乙個檔案的安裝 m-x load-file ret filename ret 安裝整個檔案裡的函式
要想在每次啟動emacs都自動安裝,將函式定義放在.emacs裡或者init.el裡,這是最簡單的方法,具體細節在以後再介紹
- 控制結構
- 條件控制
條件控制的語法如下
(if (condition)
then-part
else-part)
if條件控制由三個部分組成:
- 條件判斷列表,對條件進行測試,返回值為nil或者其它代表t的值,elisp中只有空列表()或者nil表示假,其它所有的值都
表示真。
- then-part是乙個列表,當條件為真時執行。如果要執行多個列表,使用progn特殊表將多個語句包起來一起執行
- else-part是可選的,當條件為假時執行。和then-part一樣,要執行多個語句,使用progn特殊表
- 迴圈結構
迴圈結構的語法如下:
(while (condition)
body)
迴圈結構由兩部分組成,條件列表部分,每次開始執行時判斷條件是否為真,當條件為真時執行body裡的所有語句一次,然後再次判斷
條件是否為真,繼續執行body,直到條件為假為止。
C語言 基本概念
c語言的基本概念 1.格式 型別修飾符 變數名初始值.2.定義變數規則 1 不能以數字開頭.2 由下劃線,字母,美元符,數字組成.3 變數名不能重複.4 不要以拼音命名,特別是拼音簡寫.5 駝峰結構 駝峰命名法.6 不能與系統保留字重名.3.編寫 規範 操作符兩個由空格,逗號後面乙個空格.練習1 定...
C語言基本概念
bit 中文名稱是位,音譯 位元 是用以描述電腦資料量的最小單位。二進位制數系統中,每個0或 1就是乙個位 bit bit縮寫為b。位元組 byte 是計算機 資訊科技 用於計量儲存容量和傳輸容量的一種計量單位,乙個位元組等於8位 二進位制數 byte 縮寫為b 1kb 1024 bytes 102...
C 語言基本概念
類 具有同種屬性的物件稱為類,是個抽象的概念。比如說 汽車 人 狗 神 物件 日常生活中的所有東西都是物件,是類的例項化。比如說 推土車是汽車的例項化 姚明是人的例項化 小白 狗的名字 是狗的例項化 二郎神是神的例項化 屬性 用來描述具體某個物件的特徵的是屬性,是靜態的。比如 姚明身高2.6公尺多 ...