rns*_*nso 2 scheme input racket
我尝试使用此页面上的代码来实现用户输入功能:简单的Racket终端交互
(define entry_list (for/list ([line (in-lines)]
#:break (string=? line "done"))
(println line)))
(println entry_list)
Run Code Online (Sandbox Code Playgroud)
输出是:
this
"this "
is
"is "
a
"a "
test
"test"
for testing only
"for testing only"
done
'(#<void> #<void> #<void> #<void> #<void>)
Run Code Online (Sandbox Code Playgroud)
为什么列表只包含"无效"项?
那是因为println
函数返回#<void>
.如果不是println而是为每一行添加了返回不同值的内容,那么最终会得到一个更有趣的列表.
例如,以下代码应返回包含您键入的行的列表:
(define entry_list
(for/list ([line (in-lines)]
#:break (string=? line "done"))
line))
Run Code Online (Sandbox Code Playgroud)
如果你只想打印线条,那么你可以使用for
而不是for/list
,以避免在最后创建一个无用的空洞列表: