2016-04-14 5 views
1

Ich lese Part two aus dem 2htdp Buch, und ich bin neugierig auf das Verhalten der read-words/line Funktion, die unter 2htdp/batch-io lebt.Schläger: 2htdp Speichert `read-words/line 'die letzte Newline-Information?

Ich habe zwei verschiedene Dateien, die erste Datei ein \n am Ende der Datei und die zweite Datei, ohne sie, wie dies mit:

echo -ne "first line\n\nthird line\n" > file1.txt 
echo -ne "first line\n\nthird line" > file2.txt 

wenn ich jede der Dateien mit den read-words/line lesen dies ist das Ergebnis:

(read-words/line "doc/book/htdp2/data/file1.txt") 
    ; => '(("first" "line")() ("third" "line")) 

(read-words/line "doc/book/htdp2/data/file2.txt") 
    ; => '(("first" "line")() ("third" "line")) 

Es sieht aus, dass die Funktion nicht in der ersten Datei, die Informationen aus den letzten newline-Zeichen zu erhalten.

Ist dieses Verhalten beabsichtigt?

Ich laufe Dr Racket 6.2.1 auf einer GNU/Linux-Box.

Danke,

Antwort

1

Ich würde ja sagen. Die Absicht von Lesewörter/Zeile besteht darin, eine Liste von Wörtern für jede gelesene Zeile zu erzeugen. Eine Zeile ist normalerweise eine Folge von Zeichen, die in einer neuen Zeile enden. Die letzte Zeile einer Datei kann in "eof-of-file" statt in einer neuen Zeile enden. Wenn Sie dieses Beispiel versuchen:

echo -ne "first line\n\nthird line\n\n" > file1.txt 

Ich erwarte, dass die letzte Zeile eine leere Liste von Wörtern erzeugt.

+0

Wie Sie gesagt haben, ist dies das beabsichtigte Verhalten. Ich habe einen Thread im Racket-Benutzer-Forum geöffnet, und sie sagten, dies ist das beabsichtigte Verhalten und es wurde der Dokumentation hinzugefügt. https://groups.google.com/forum/#!topic/racket-users/YnXJ36XGohM – quicoju