LISP - 數據類型
在LISP中,變量沒有類型的,但有數據對象。
LISP數據類型可分類爲:
標量類型 - 例如,數字類型,字符,符號等。
數據結構 - 例如,列表,向量,比特向量和字符串。
任何變量都可以採取任何的Lisp對象作爲它的值,除非明確地聲明它。
雖然,這是沒有必要指定一個Lisp變量的數據類型,但是,它有助於在一定的循環擴展,在方法聲明和其他一些情況下,我們將在後面的章節中討論。
該數據類型被佈置成層次結構。數據類型是一組LISP對象和多個對象可能屬於這樣的一套。
typep謂詞用於發現一個對象是否屬於一個特定的類型。
type-of函數,返回給定對象的數據類型的類型。
在LISP類型說明符
類型說明符是數據類型的系統定義的符號。
array
fixnum
package
simple-string
atom
float
pathname
simple-vector
bignum
function
random-state
single-float
bit
hash-table
ratio
standard-char
bit-vector
integer
rational
stream
character
keyword
readtable
string
[common]
list
sequence
[string-char]
compiled-function
long-float
short-float
symbol
complex
nill
signed-byte
t
cons
null
simple-array
unsigned-byte
double-float
number
simple-bit-vector
vector
除了這些系統定義的類型,可以創建自己的數據類型。當一個結構類型是使用defstruct函數定義,結構類型的名稱將成爲一個有效的類型符號。>/p>
示例1
創建一個名爲main.lisp新的源代碼文件,並在其中輸入如下代碼:
(setq x 10) (setq y 34.567) (setq ch nil) (setq n 123.78) (setq bg 11.0e+4) (setq r 124/2) (print x) (print y) (print n) (print ch) (print bg) (print r)
當單擊Execute按鈕,或按下Ctrl+ E,LISP立即執行它,返回的結果是:
10 34.567 123.78 NIL 110000.0 62
實例2
接下來讓我們看看前面的例子中使用的變量的類型。創建一個名爲main.lisp新的源代碼文件,並在其中輸入如下代碼:
(setq x 10) (setq y 34.567) (setq ch nil) (setq n 123.78) (setq bg 11.0e+4) (setq r 124/2) (print (type-of x)) (print (type-of y)) (print (type-of n)) (print (type-of ch)) (print (type-of bg)) (print (type-of r))
當您單擊Execute按鈕,或按下Ctrl+ E,LISP立即執行它,返回的結果是:
(INTEGER 0 281474976710655) SINGLE-FLOAT
SINGLE-FLOAT
NULL
SINGLE-FLOAT (INTEGER 0 281474976710655)