在LISP中,變量沒有類型的,但有數(shù)據(jù)對(duì)象。
LISP數(shù)據(jù)類型可分類為:
標(biāo)量類型 - 例如,數(shù)字類型,字符,符號(hào)等。
數(shù)據(jù)結(jié)構(gòu) - 例如,列表,向量,比特向量和字符串。
任何變量都可以采取任何的Lisp對(duì)象作為它的值,除非明確地聲明它。
雖然,這是沒有必要指定一個(gè)Lisp變量的數(shù)據(jù)類型,但是,它有助于在一定的循環(huán)擴(kuò)展,在方法聲明和其他一些情況下,我們將在后面的章節(jié)中討論。
該數(shù)據(jù)類型被布置成層次結(jié)構(gòu)。數(shù)據(jù)類型是一組LISP對(duì)象和多個(gè)對(duì)象可能屬于這樣的一套。
typep謂詞用于發(fā)現(xiàn)一個(gè)對(duì)象是否屬于一個(gè)特定的類型。
type-of函數(shù),返回給定對(duì)象的數(shù)據(jù)類型的類型。
類型說明符是數(shù)據(jù)類型的系統(tǒng)定義的符號(hào)。
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 |
除了這些系統(tǒng)定義的類型,可以創(chuàng)建自己的數(shù)據(jù)類型。當(dāng)一個(gè)結(jié)構(gòu)類型是使用defstruct函數(shù)定義,結(jié)構(gòu)類型的名稱將成為一個(gè)有效的類型符號(hào)。>/p>
示例1
創(chuàng)建一個(gè)名為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)
當(dāng)單擊Execute按鈕,或按下Ctrl+ E,LISP立即執(zhí)行它,返回的結(jié)果是:
10 34.567 123.78 NIL 110000.0 62
實(shí)例2
接下來讓我們看看前面的例子中使用的變量的類型。創(chuàng)建一個(gè)名為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))
當(dāng)您單擊Execute按鈕,或按下Ctrl+ E,LISP立即執(zhí)行它,返回的結(jié)果是:
(INTEGER 0 281474976710655) SINGLE-FLOAT SINGLE-FLOAT NULL SINGLE-FLOAT (INTEGER 0 281474976710655)