2016-08-12 54 views
2

只有空洞的项目我试着使用此页面上的代码让用户输入功能:A simple Racket terminal interaction为什么这个名单在球拍

(define entry_list (for/list ([line (in-lines)] 
      #:break (string=? line "done")) 
    (println line))) 

(println entry_list) 

输出是:

this 
"this " 
is 
"is " 
a 
"a " 
test 
"test" 
for testing only 
"for testing only" 
done 
'(#<void> #<void> #<void> #<void> #<void>) 

为什么名单包括只“无效”项目?

回答

5

这是因为println函数返回#<void>。如果不是println,你会为每行返回一个不同的值,最终会得到一个更有趣的列表。

例如,下面的代码应返回与您键入的行列表:

(define entry_list 
    (for/list ([line (in-lines)] 
      #:break (string=? line "done")) 
    line)) 

如果你只是要打印的行,那么你也可以使用for代替for/list,以避免产生一个无用的空白列表: