天天看點

194_common lisp的幾種函數定義

  1. 類似C語言的空參、空傳回的函數。
194_common lisp的幾種函數定義

運作:

194_common lisp的幾種函數定義
  1. 類似C++的重載,參數傳入數目可變

運作效果:

194_common lisp的幾種函數定義

以上函數的參數變化也是有一個範圍的,最小為不加任何可選的參數,最大為加上所有的可選參數。如果不在這個範圍内,調用函數的時候會報錯。

194_common lisp的幾種函數定義
  1. 類似Python中形參具有預設數值
194_common lisp的幾種函數定義
194_common lisp的幾種函數定義

4, 類型3的變型:最多隻有一個參數

194_common lisp的幾種函數定義
194_common lisp的幾種函數定義

5,更加靈活的可選參數,可以提示可選參數是否被傳入。

194_common lisp的幾種函數定義
194_common lisp的幾種函數定義

從上面的結果可以看得出,即使是可選的參數的數值使用了預設的數值,在函數調用的時候也會提示可選參數被填入的資訊。

6,剩餘形參

典型的例子是+函數,後面的參數個數可以選擇多個。從實作方式上來看,這個實作可能會用到遞歸之類的思想。暫時我的學習還是處于初級階段,後面再嘗試這樣的一個軟體實作。

7,更加靈活的可選參數,可以指定某個參數是否選擇預設參數

194_common lisp的幾種函數定義
194_common lisp的幾種函數定義

除非傳入參數為空,否則必須指定關鍵字。如果關鍵字的順序變化,不會影響到執行結果。這種用法還可以結合上面的函數定義技巧,演化出更加複雜的方式。

8,多特性結合

194_common lisp的幾種函數定義
194_common lisp的幾種函數定義

上面是運作的幾種情況,有成功的有不成功的。似乎,這種方式可以用來設定類似于open這樣帶有不同參數屬性設定的函數。

9,函數的傳回值

預設情況下,函數傳回最後一個表達式的求值結果。如果想要傳回值,有一個類似C語言中return的表達式return-from。Common lisp中的這個設計似乎沒有C語言那麼簡潔,這個表達式的參數必須先加上代碼塊的名稱。

194_common lisp的幾種函數定義
194_common lisp的幾種函數定義

10,高階函數

這是把函數當做資料來用的一種方式,《實用common lisp程式設計》書中給出的例子有很多語言元素沒有提前介紹就使用了,是以沒有了解透的我這裡不總結了。後面回頭了解了再整理。

11, 匿名函數

這個前面我已經接觸到了,其實應該就是lambda表達式了。

194_common lisp的幾種函數定義

這裡面多少用到了一點高階函數,但是其實是沒有用到其精髓,能夠感覺得出這個高階函數是為什麼設計的,但是我現在還缺少一些基礎的語料來輔助我事件。

繼續閱讀