JT9*_*T93 8 lisp null if-statement
我很抱歉不得不提出这个问题,但我正在尝试做一个简单的if
陈述,检查一个变量是否nil
存在.
(defun test (input)
(let ((testvar (first input)))
(if (not nil testvar)
(do this)
(do that))))
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释正确的语法吗?
Gol*_*den 11
由于nil
等效于布尔值false
,因此无需明确地与其进行比较.
一个简单的
(if testvar
(...)
(...))
Run Code Online (Sandbox Code Playgroud)
会做的.您只需要not
检查相反的情况,例如,如果要检查变量不是nil
:
(if (not testvar)
(...)
(...))
Run Code Online (Sandbox Code Playgroud)
除此之外,还有一个null
可以使用的谓词函数.它基本上用于检查给定列表是否为空,但由于空列表等效nil
,它将起作用(如链接页面上的示例指出):
(null '()) => T
(null nil) => T
(null t) => NIL
(null 1) => NIL
Run Code Online (Sandbox Code Playgroud)
无论如何,这基本上只会将问题向上移动一层;-)
jkiiski 是对的:
只是(如果(不是 testvar)...)。或者将 true 分支放在第一位并执行(如果 testvar ...)