選用

選用參數 在 Common Lisp

2 個練習

關於 選用參數

在 lambda list 中,&optional這個 lambda list 關鍵字用來指定選擇性參數。選擇性參數並非必要,可以有預設值,也可以指定一個「supplied-p 參數」,它會是「true」或「false」,取決於是否提供了該參數的引數。

(defun optional-parameter (&optional (arg -1)) arg)
(optional-parameter)    ; => -1
(optional-parameter 13) ; => 13

選擇性參數必須放在必要參數之後,但在具名參數或其餘參數之前。引數會先繫結到必要參數,再繫結到選擇性參數,最後才繫結到其餘參數與具名參數。

(defun req-and-opt (req &optional (opt -1)) (list req opt)
(req-and-opt 1)    ; => (1 -1)
(req-and-opt 1 13) ; => (1 13)

雖然多種參數型別可以和其他型別的參數搭配使用(選擇性參數和關鍵字參數),但這麼做可能會產生問題,使用時應該謹慎。 請參閱 Practical Common Lisp 中的「Mixing Different Parameter Types」一節。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟

學習 選用參數

練習已鎖定

再解鎖 1 個練習,就能練習 選用參數