球拍:2htdp`读词/线'保留最后的换行信息?

时间:2016-04-14 00:31:09

标签: racket

我正在阅读2htdp书中的Part two,我对read-words/line2htdp/batch-io函数的行为感到好奇。

我创建了两个不同的文件,第一个文件在文件末尾有\n,第二个文件没有文件,如下所示:

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

如果我用read-words/line读取每个文件,结果就是:

(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"))

看起来该函数不保留第一个文件中最后一个换行符的信息。

这种行为是否打算?

我在GNU / Linux机器上运行Dr Racket 6.2.1。

谢谢,

1 个答案:

答案 0 :(得分:1)

我说是的。 read-words / line的意图是为每行读取生成一个单词列表。一行通常是以换行符结尾的字符序列。文件的最后一行可以以" eof-of-file"而不是换行符。如果您尝试此示例:

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

我希望最后一行产生一个空的单词列表。