我有来自文档的代码:
(define-values (in out) (make-pipe))
(write "234234" out)
(read in)
这会在文档中生成"234234"
。下一段代码,只是读取块。为什么会这样?
(define-values (in out) (make-pipe))
(write 234234 out) ; <-- NOT A STRING
(read in) ; <-- BLOCKS
答案 0 :(得分:4)
这里的根本问题是读者必须从输入中解析一个完整的值。当您向管道发送“234234”时,管道包含8个字符,最后一个(第二个双引号)通知read
该值已完成。当你写234234时,管道中唯一的东西是数字,读者无法判断数字是否完整。要查看此内容,请尝试以下操作:
#lang racket
(define-values (in out) (make-pipe))
(write 234234 out)
(write 111 out)
(display " " out)
(read in)
这会产生数字234234111。