2012-06-05 14 views
11

Es una pregunta fácil de responder (supongo), pero busqué durante un tiempo sin encontrar nada, así que le dirigiré mi pregunta.Cómo determinar el tipo de datos de una variable

Existe el typep para determinar si una variable determinada es de algún tipo de datos específico, p. entero, hashtable etc., pero ¿hay alguna función que devuelva el tipo de datos?

p. Ej.

(defvar *x* 1) 
*x* 

(typep *x* 'integer) 
T 

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

ver el operador 'type-of' –

+1

Aunque, para nitpick, el tipo está realmente conectado al * objeto * (almacenado en una variable), no a la variable. – Dirk

+0

La respuesta de Rainer Joswigs se ajusta a mis necesidades, ya que tenía una Clase que no pude identificar pero necesitaba su tipo para verificarla antes de llamar algunas funciones sobre ella. – Sim

Respuesta

22

Existe la typep para determinar si una variable dada es de algún tipo de datos específico, por ejemplo, entero, hashtable etc.,

No realmente. En Common Lisp, las variables no se escriben como crees.

(defvar *x* 1) 
*x* 

(typep *x* 'integer) 
T 

dice nada acerca Sobre el tipo de una variable *x*. Confirma que el objeto 1 es del tipo integer.

pero hay una función que devuelve el tipo de datos?

No

realmente. Hay una función TYPE-OF, que devuelve el tipo de un objeto, no de una variable.

> (type-of 1) 
FIXNUM 

No hay diferencia cuando obtenemos el valor de una variable.

> (type-of *x*) 
FIXNUM 

Pero eso no significa que la variable tenga ese tipo.

Nota: Common Lisp tiene tipos y tipos de declaraciones. Pero eso se ve un poco diferente.

Cuestiones relacionadas