我在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)         ;; ==> ------------ " -----------------------

看看typeptypecasecharacterp的定义。。。
(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/

10-11 02:35