我在Lisp中有一个正在排序的列表,我想做一个if语句来检查列表中的当前对象是字符还是整数。
有没有类似的东西:
(if (EQUAL currentObject char)
...)
或者
(if (EQUAL currentObject integer)
...)
我能用吗??
非常感谢。
最佳答案
有多种方法可以确定,你手头有什么样的东西。
(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”…)
关于char - 在Lisp中区分字符和整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20938327/