2012-06-05 73 views
11

這是一個很容易回答的問題(我猜),但是我找了一會兒找不到任何東西,所以我會把我的問題指向你。如何確定變量的數據類型

存在typep以確定給定變量是否具有某種特定數據類型,例如,整數,哈希表等,但是有沒有一個函數返回數據類型?

例如

(defvar *x* 1) 
*x* 

(typep *x* 'integer) 
T 

(the-type-function *x*) 
INTEGER 
+2

請參閱'type-of'運算符 –

+1

儘管對於nitpick,類型實際上是附加到* object *(存儲在變量中),而不是附加到變量。 – Dirk

+0

Rainer Joswigs回答符合我的需求,因爲我有一個Class我無法識別,但需要它的類型來檢查它,然後調用它的某些功能。 – Sim

回答

22

還有就是typep以確定給定的變量是否是一些特定的數據類型的例如整數,哈希表等,

不是真的。按照您的想法,Common Lisp變量不會輸入。

(defvar *x* 1) 
*x* 

(typep *x* 'integer) 
T 

上面沒有說明變量的類型*x*。它確認對象1integer類型。

但是有沒有函數返回數據類型?

不是。有一個函數TYPE-OF,它返回一個對象的類型,而不是一個變量。

> (type-of 1) 
FIXNUM 

當我們從變量中獲得值時沒有區別。

> (type-of *x*) 
FIXNUM 

但這並不意味着該變量具有該類型。

注意:Common Lisp具有類型和類型聲明。但是看起來有些不同。