如何确定变量的数据类型

Sim*_*Sim 21 types common-lisp

这是一个很容易回答的问题(我猜),但我找了一段时间没找到任何东西,所以我会向你提问.

typep确定给定变量是否属于某种特定数据类型,例如整数,散列表等,但是有一个返回数据类型的函数吗?

例如

(defvar *x* 1)
*x*

(typep *x* 'integer)
T

(the-type-function *x*)
INTEGER
Run Code Online (Sandbox Code Playgroud)

Rai*_*wig 33

有一个typep来确定给定变量是否属于某种特定的数据类型,例如整数,哈希表等,

并不是的.在Common Lisp中,变量不是您想象的那样.

(defvar *x* 1)
*x*

(typep *x* 'integer)
T
Run Code Online (Sandbox Code Playgroud)

上面没有提到变量的类型*x*.它确认对象1是类型的integer.

但是有一个返回数据类型的函数吗?

并不是的.有一个函数TYPE-OF,它返回一个对象的类型,而不是一个变量.

> (type-of 1)
FIXNUM
Run Code Online (Sandbox Code Playgroud)

当我们从变量中获取值时没有区别.

> (type-of *x*)
FIXNUM
Run Code Online (Sandbox Code Playgroud)

但这并不意味着变量具有该类型.

注意:Common Lisp具有类型和类型声明.但这看起来略有不同.