我正在阅读racket文档的FileSystem部分,我无法弄清楚如何使用exists标志,这是我写的:
(define (write-file file data)
(with-output-to-file file
(lambda ()
(write data))
#:exists (or/c 'error 'append 'update 'can-update 'replace 'truncate 'must-truncate 'truncate/replace)))))
文档没有提供示例用法,我是通过示例学习最好的人之一。
答案 0 :(得分:2)
在
(or/c 'error 'append 'update 'can-update 'replace
'truncate 'must-truncate 'truncate/replace)))))
表示您需要选择其中一个标志。
例如:
(define (write-file file data)
(with-output-to-file file
(lambda ()
(write data))
#:exists 'replace))
指南中充满了示例:http://docs.racket-lang.org/guide/ports.html
更新
这是我试图解释如何阅读文档。 蓝框的第一部分包含:
(open-output-file path
[ #:mode mode-flag
#:exists exists-flag]) → output-port?
这意味着函数open-output-file
接受一个参数path
并返回output-port
。
此(open-output-file "foo.txt")
将打开文件并返回一个端口。
方括号表示可选参数。例如:
(open-output-file "foo.txt" #:mode 'binary)
将以二进制模式打开文件。
文档说#:mode mode-flag
所以#:mode
之后的内容必须是合法mode-flag
。在蓝色框中再说:
mode-flag : (or/c 'binary 'text) = 'binary
这意味着mode-flag
可以是'binary
或'text
。
请注意,还解释了path
参数:
path : path-string?
这意味着必须使用path-string?
将返回true的值。
要查看这意味着什么,请单击path-string?
并阅读有关路径字符串的内容。
最后一部分是exists-flag
的列表。 or/c
意味着我们必须一次使用这些标志。
exists-flag : (or/c 'error 'append 'update 'can-update
'replace 'truncate 'must-truncate 'truncate/replace)
另请注意,文档分为两部分:参考和指南。 “指南”中有更多示例,请查看。