我正在阅读2 2htdp书中的第二部分,我对read-words/line函数在2htdp/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盒上运行racket6.2.1博士。
谢谢,
发布于 2016-04-14 12:00:19
我会答应的。读-字/行的意图是为每一行阅读生成一个单词列表。行通常是以换行符结尾的一系列字符。文件的最后一行可以以“eof”结尾,而不是换行符。如果您尝试这个示例:
echo -ne "first line\n\nthird line\n\n" > file1.txt我希望最后一行能产生一个空的单词列表。
https://stackoverflow.com/questions/36611808
复制相似问题