在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Java/ LISP - 函數
LISP - 樹
LISP - 錯誤處理
LISP - 謂詞
LISP - 決策
LISP - 變量
LISP - 數組
LISP - 對象系統(tǒng)(CLOS)
LISP - 輸入和輸出
Lisp教程
LISP - 數字
LISP - 循環(huán)
LISP - 常量
LISP - 集合
LISP - 字符
LISP - 程序結構
LISP - 文件I/O
LISP - 哈希表
LISP - 宏
LISP - 數據類型
LISP - 包
LISP - 符號
LISP - 運算符
LISP - 基本語法
LISP - 函數
LISP - 向量
LISP - 結構
LISP - 概述介紹

LISP - 函數

函數是一組一起執(zhí)行任務的語句。

可以把代碼放到單獨的函數。如何劃分代碼之前不同的功能,但在邏輯上劃分通常是這樣每個函數執(zhí)行特定的任務。

LISP函數定義

命名函數defun宏用于定義函數。該函數的defun宏需要三個參數:

  • 函數名稱

  • 函數的參數

  • 函數的體

defun語法是:

(defun name (parameter-list)
  "Optional documentation string."
  body)

讓我們舉例說明概念,簡單的例子。

例子 1

讓我們編寫了一個名為averagenum,將打印四個數字的平均值的函數。我們將會把這些數字作為參數。

創(chuàng)建一個名為main.lisp一個新的源代碼文件,并在其中輸入如下代碼:

(defun averagenum (n1 n2 n3 n4)
   (/ ( + n1 n2 n3 n4) 4))
(write(averagenum 10 20 30 40))

當執(zhí)行的代碼,它返回以下結果:

25

示例 2

讓我們定義和調用函數,將計算出的圓的面積,圓的半徑被指定作為參數的函數。

創(chuàng)建一個名為main.lisp一個新的源代碼文件,并在其中輸入如下代碼:

(defun area-circle(rad)
"Calculates area of a circle with given radius"
  (terpri)
  (format t "Radius: ~5f" rad)
  (format t "~%Area: ~10f" (* 3.141592 rad rad)))
  (area-circle 10)

當執(zhí)行的代碼,它返回以下結果:

請注意:

  • 可以提供一個空的列表作為參數,這意味著函數沒有參數,該列表是空的,表示為()。

  • LISP還允許可選,多個和關鍵字參數。

  • 文檔字符串描述了函數的目的。它與函數名相關聯(lián),并且可以使用文檔函數來獲得。

  • 函數的主體可以包含任意數量的Lisp表達式。

  • 在主體內的最后一個表達式的值返回函數的值。

  • 還可以使用返回 - 從特殊的運算符函數返回一個值。

讓我們討論在簡要上述概念。點擊以下鏈接,了解詳細信息:

可選參數

可以使用可選參數定義一個函數。要做到這一點,需要把符號與可選的可選參數的名稱之前。

我們將只是顯示它接收的參數的函數。

示例

創(chuàng)建一個名為main.lisp一個新的源代碼文件,并在其中輸入如下代碼:

(defun show-members (a b &optional c d) (write (list a b c d)))
(show-members 1 2 3)
(terpri)
(show-members 'a 'b 'c 'd)
(terpri)
(show-members 'a 'b)
(terpri)
(show-members 1 2 3 4)

當執(zhí)行代碼,它返回以下結果:

(1 2 3 NIL)
(A B C D)
(A B NIL NIL)
(1 2 3 4)

請注意,參數c和d是在上面的例子中,是可選參數。

其余部分參數

有些函數需要采用可變數目的參數。

例如,我們使用格式化函數需要兩個必需的參數,數據流和控制字符串。然而,該字符串后,它需要一個可變數目的取決于要顯示的字符串中的值的數目的參數。

同樣,+ 函數,或 * 函數也可以采取一個可變數目的參數。

可以提供這種可變數目的使用符號與其余參數。

下面的例子說明了這個概念:

示例

創(chuàng)建一個名為main.lisp一個新的源代碼文件,并在其中輸入如下代碼:

(defun show-members (a b &rest values) (write (list a b values)))
(show-members 1 2 3)
(terpri)
(show-members 'a 'b 'c 'd)
(terpri)
(show-members 'a 'b)
(terpri)
(show-members 1 2 3 4)
(terpri)
(show-members 1 2 3 4 5 6 7 8 9)

當執(zhí)行代碼,它返回以下結果:

(1 2 (3))
(A B (C D))
(A B NIL)
(1 2 (3 4))
(1 2 (3 4 5 6 7 8 9))

關鍵字參數

關鍵字參數允許指定哪個值與特定的參數。

它使用的是 &key 符號表示。

當發(fā)送的值到該函數必須先于值 :parameter-name.

下面的例子說明了這個概念。

例子

創(chuàng)建一個名為main.lisp一個新的源代碼文件,并在其中輸入如下代碼:

(defun show-members (&key a b c d ) (write (list a b c d)))
(show-members :a 1 :c 2 :d 3)
(terpri)
(show-members :a 'p :b 'q :c 'r :d 's)
(terpri)
(show-members :a 'p :d 'q)
(terpri
            
上一篇:LISP - 輸入和輸出下一篇:LISP - 數組