如何更改球拍中的输入端口?
也就是说,假设我创建了一个新的输入端口:
(define my-port (open-input-string "this is a test"))
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它现在(current-input-port)回归my-port?
添加克里斯的回答; 当前的输入端口是所谓的"参数",它几乎是一个动态范围的设置/变量.通常,使用'parameterize'暂时设置当前输入端口更干净,更保守.像这样:
(parameterize ([current-input-port my-port])
... do some stuff ...
)
Run Code Online (Sandbox Code Playgroud)
评估此代码将导致为您的正文代码和它调用的任何代码设置输入端口,但不会"渗透"到外部评估的代码中; 它还将撤消基于例外或基于继续的退出的更改.
(current-input-port my-port)
Run Code Online (Sandbox Code Playgroud)
不要在racketREPL 中这样做!这将导致所有后续 REPL 输入都来自该源。(不过,即使在 DrRacket REPL 中,也可以在 DrRacket 中运行。)