ELisp程式設計七 建立函式

2021-08-26 20:06:28 字數 965 閱讀 8990

自定義函式

用emacs建立乙個test.el檔案。編寫如下**:

(defun add2 (x)

(+ 2 x))

(add2 8)

第一段是定義了乙個函式add2,傳遞任意數值x,都會加上2後返回,在這個函式的最後的括號後面執行c-x c-e,建立該函式。

然後在到第二段呼叫**最後面執行c-x c-e

在mini-buffer可以看到和為10.

如果想要呼叫乙個不存在的函式,解析器會報錯:(void-function function-name)

引數

函式可以沒有引數,也可以接受:

乙個引數

多個引數

引數可以是list

數目可變的引數,比如concat函式

如果傳遞的引數型別錯誤,解析器會報錯

如果乙個函式要求引數,而你沒有傳遞引數,解析器也會報錯:

(void-variable function-name)

區域性變數

let函式用於定義乙個區域性變數,該變數遮蔽了其他同名的變數,但盡在let語句內部有效。

let包含了三個部分,第一是let函式,第二是varlist,第三是body,也就是可以在let塊內部執行的語句。

(let ((variable value)

(variable value)

...)

body...)

下面是乙個例子:

(let ((zebra 'stripes)

(tiger 'fierce))

(message "one kind of animal has %s and another is %s."

zebra tiger))

ELisp程式設計五 解析器相關

lisp解析器如何處理list?如果這個list前面有單引號,就會直接將該list返回 不包含單引號 如果沒有單引號,則會將這個list的第乙個元素作為函式名去查詢,如果找到,則呼叫該函式,如果找不到則返回錯誤訊息。一般按照從左到右的順序乙個乙個處理list中的元素 如果list內部有巢狀,解析器總...

ELisp程式設計五 解析器相關

lisp解析器如何處理list?如果這個list前面有單引號,就會直接將該list返回 不包含單引號 如果沒有單引號,則會將這個list的第乙個元素作為函式名去查詢,如果找到,則呼叫該函式,如果找不到則返回錯誤訊息。一般按照從左到右的順序乙個乙個處理list中的元素 如果list內部有巢狀,解析器總...

Swift程式設計七(函式)

swift中的每個函式都有乙個型別,由函式的引數型別和返回型別組成。像swift中的任何其他型別一樣使用此型別,這使得將函式作為引數傳遞給其他函式以及從函式返回函式變得很容易。函式也可以在其他函式中編寫,以在巢狀函式範圍內封裝有用的功能。略 每個函式引數都有引數標籤和引數名稱。呼叫函式時使用引數標籤...