在线观看不卡亚洲电影_亚洲妓女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 - 包

在編程語言的通用術語中,包是專為提供一種方法來保持一組名從另一個分開的。在一個包中聲明的符號將不會與另一個聲明的相同的符號相沖突。這樣的包減少獨立的代碼模塊之間的命名沖突。

LISP讀取器會維護所有已發(fā)現(xiàn)的符號表。當它找到一個新的字符序列,它在符號表中創(chuàng)建一個新的符號和存儲。這個表被稱為一個包。

當前包是由特殊變量*package*引用。

有兩個預定義的包在LISP:

  • common-lisp - it包含了所有已定義的函數和變量符號。

  • common-lisp-user - it 采用了common-lisp包和其他所有的包與編輯和調試工具;它簡稱為cl-user

LISP包函數

下表提供了用于創(chuàng)建,使用和操作封裝最常用的功能:

SL No 函數和說明
1

make-package package-name &key :nicknames :use

它創(chuàng)建并使用指定的包名返回一個新的包。

2

in-package package-name &key :nicknames :use

使得當前的程序包。

3

in-package name

這個宏的原因*package*設置為名為name的包,它必須是一個符號或字符串。

4

find-package name

它搜索一個包。返回包的名稱或昵稱;如果沒有這樣的程序包是否存在,find-package返回nil

5

rename-package package new-name &optional new-nicknames

它重命名一個包。

6

list-all-packages

該函數返回一個當前存在于Lisp語言系統(tǒng)中的所有包的列表。

7

delete-package package

它會刪除一個包

創(chuàng)建一個LISP包

defpackage函數用于創(chuàng)建一個用戶定義的程序包。它的語法如下:

defpackage :package-name
  (:use :common-lisp ...)
  (:export :symbol1 :symbol2 ...))

那么,

  • package-name是包的名稱。

  • :use 關鍵字指定此包需要的包,即定義在此包中使用包的代碼函數。

  • :export 關鍵字指定為外部在這個包中的符號。

make-package函數也可用于創(chuàng)建一個包。其語法函數:

make-package package-name &key :nicknames :use

參數和關鍵字具有相同的含義。

使用包

一旦創(chuàng)建了一個包,則可以使用代碼在這個包中,使其成為當前包。in-package宏使得環(huán)境中的當前程序包。

示例

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

(make-package :tom)
(make-package :dick)
(make-package :harry)
(in-package tom)
(defun hello () 
(write-line "Hello! This is Tom's Tutorials Yiibai")
)
(hello)
(in-package dick)
(defun hello () 
(write-line "Hello! This is Dick's Tutorials Yiibai")
)
(hello)
(in-package harry)
(defun hello () 
(write-line "Hello! This is Harry's Tutorials Yiibai")
)
(hello)
(in-package tom)
(hello)
(in-package dick)
(hello)
(in-package harry)
(hello)

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

Hello! This is Tom's Tutorials Yiibai
Hello! This is Dick's Tutorials Yiibai
Hello! This is Harry's Tutorials Yiibai

刪除包

delete-package宏允許刪除一個包。下面的例子演示了這一點:

示例

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

(make-package :tom)
(make-package :dick)
(make-package :harry)
(in-package tom)
(defun hello () 
(write-line "Hello! This is Tom's Tutorials Yiibai")
)
(in-package dick)
(defun hello () 
(write-line "Hello! This is Dick's Tutorials Yiibai")
)
(in-package harry)
(defun hello () 
(write-line "Hello! This is Harry's Tutorials Yiibai")
)
(in-package tom)
(hello)
(in-package dick)
(hello)
(in-package harry)
(hello)
(delete-package tom)
上一篇:LISP - 常量下一篇:LISP - 宏