Input 球拍中的真实标准输入
看来球拍无法从标准输入中读出一根弦Input 球拍中的真实标准输入,input,racket,Input,Racket,看来球拍无法从标准输入中读出一根弦 $ racket Welcome to Racket v6.4. -> (define (s) (read-line)) 好的,s是调用readline的别名 -> (printf "You entered: ~a\n" s) You entered: 失败:字符串已打印,但球拍未等待按键/STDIN/EOF/EOL -> (define n (read)) a -> n 'a 失败:调用read并等待EOF
$ racket
Welcome to Racket v6.4.
-> (define (s) (read-line))
好的,s
是调用readline
的别名
-> (printf "You entered: ~a\n" s)
You entered:
失败:字符串已打印,但球拍未等待按键/STDIN/EOF/EOL
-> (define n (read))
a
-> n
'a
失败:调用read
并等待EOF/EOL,然后分配给n
,但n
分配的是符号'a
而不是字符串文字a
-> (read-line)
""
失败:调用readline
不等待STDIN,只返回空字符串
-> (read-string 5)
asdasdasdasd
"\nasda"
; sdasdasd: undefined;
; cannot reference undefined identifier
; [,bt for context]
失败:只读取5个字节的STDIN,显然eval
s它的其余部分
-> (read-string 500000)
asdasd
asdasdaas
a
asdasd
asdasd
asdasd
失败:直到读取了500000字节才返回,并且在EOL时不返回。
有点像Python的
input()
在找到EOL
时返回字符串,或者是类似的readln
,如何从当前输入端口读取原始数据?这只是Racket的REPL输入处理的一个限制。如果你写一个独立的程序,它会工作得很好
以下是邮件列表中的一句话,解释了问题:
已知的限制。由普通'racket'实现的REPL没有
将REPL表达式的输入流与程序的
输入流
更多详情:很高兴知道,谢谢,尽管这有点烦人。有解决方法吗,还是会被修复?(定义(我的读取行)(let([contents(读取行)])(如果(string=?contents“”)(读取行)contents))
是我现在想使用的。