我想将READ
的用户输入与字符串进行比较,如下所示:
CL-USER 36 > (equalp (read) "same")
same
NIL
但是,正如您所看到的,即使我键入“相同”,EQUALP
表示我的输入和字符串不同。我如何比较这两个?
答案 0 :(得分:5)
您可以使用read-line
:
CL-USER> (equalp (read-line) "same")
same
T
read
会返回一个符号:
CL-USER> (type-of (read))
same
SYMBOL
来自Hyperspec:
read从input-stream中解析对象的打印表示 并建立这样一个对象。
您只想读取字符串,而read
解析输入并从中构造Lisp对象。
要从read
中获取字符串,您必须使用字符串的“打印表示”,即将它们用双引号括起来:
CL-USER> (equalp (read) "same")
"same"
T
(顺便说一句:字符串比较有string=
; equalp
会忽略大小写。)