我在Lisp中有一个列表,我正在整理,我想创建一个if语句来检查列表中的当前对象是字符还是整数。
是否有类似的东西:
(if (EQUAL currentObject char)
...)
或
(if (EQUAL currentObject integer)
...)
我可以使用??
非常感谢。
答案 0 :(得分:3)
有多种方法可以确定您手头有哪种物体。
(typep EXPR 'character) ;; ==> True, if EXPR evaluates to a character
(characterp EXPR) ;; ==> ------------ " -----------------------
(typep EXPR 'integer) ;; ==> True, if EXPR evaluates to an integer
(integerp EXPR) ;; ==> ------------ " -----------------------
查看typep,typecase,characterp的定义,...
(loop
for element in list
do (typecase element
(integer #| element is an integer number ... |#)
(character #| element is a character object ... |#)
(t #| element is something not covered above |#)))
对于许多内置类型,有可用的谓词函数,可用于测试特定值是否是该类型的实例。通常,这些谓词以其基类型的名称命名,附加“p”(“stringp”,“symbolp”,“numberp”,“consp”,...)