如何在 LispWorks 中正确地询问用户的输入?
How to properly ask an input from user in LispWorks?
我有这个代码:
(defvar x)
(setq x (read))
(format t "this is your input: ~a" x)
它在 Common Lisp 中可以正常工作,但在 LispWorks 中显示此错误:
End of file while reading stream #<Synonym stream to
*BACKGROUND-INPUT*>.
我的意思是我试过这个:How to read user input in Lisp 创建一个函数。但是仍然显示相同的错误。
希望大家能帮帮我。
你大概是把这三行代码写进Editor然后编译了
所以,你可以把这个函数写入编辑器:
(defun get-input ()
(format t "This is your input: ~a" (read)))
编译编辑器并从监听器 (REPL) 调用此函数。
CL-USER 6 > (get-input)
5
This is your input: 5
NIL
您也可以像这样使用 *query-io*
流:
(format t "This is your input: ~a" (read *query-io*))
如果在 Listener 中调用此行,它的行为类似于 read
。如果您在编辑器中调用它,它会显示小提示“输入内容:”。
如您所见,不需要全局变量。如果您需要对给定值执行某些操作,请使用 let,它会创建本地绑定:
(defun input-sum ()
(let ((x (read *query-io*))
(y (read *query-io*)))
(format t "This is x: ~a~%" x)
(format t "This is y: ~a~%" y)
(+ x y)))
也考虑使用 read-line,它接受输入 returns 作为字符串:
CL-USER 19 > (read-line)
some text
"some text"
NIL
CL-USER 20 > (read-line)
5
"5"
NIL
我有这个代码:
(defvar x)
(setq x (read))
(format t "this is your input: ~a" x)
它在 Common Lisp 中可以正常工作,但在 LispWorks 中显示此错误:
End of file while reading stream #<Synonym stream to
*BACKGROUND-INPUT*>.
我的意思是我试过这个:How to read user input in Lisp 创建一个函数。但是仍然显示相同的错误。
希望大家能帮帮我。
你大概是把这三行代码写进Editor然后编译了
所以,你可以把这个函数写入编辑器:
(defun get-input ()
(format t "This is your input: ~a" (read)))
编译编辑器并从监听器 (REPL) 调用此函数。
CL-USER 6 > (get-input)
5
This is your input: 5
NIL
您也可以像这样使用 *query-io*
流:
(format t "This is your input: ~a" (read *query-io*))
如果在 Listener 中调用此行,它的行为类似于 read
。如果您在编辑器中调用它,它会显示小提示“输入内容:”。
如您所见,不需要全局变量。如果您需要对给定值执行某些操作,请使用 let,它会创建本地绑定:
(defun input-sum ()
(let ((x (read *query-io*))
(y (read *query-io*)))
(format t "This is x: ~a~%" x)
(format t "This is y: ~a~%" y)
(+ x y)))
也考虑使用 read-line,它接受输入 returns 作为字符串:
CL-USER 19 > (read-line)
some text
"some text"
NIL
CL-USER 20 > (read-line)
5
"5"
NIL