2016-08-12 55 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,以避免產生一個無用的空白列表: