我们正在尝试使用 IronScheme 构建一个日志文件,并且我们已经使用racket 为其编写了代码。它在球拍中工作正常,但 IronScheme 会抛出错误。这是我们目前所拥有的:
(define write-to-log
(lambda(whatToWrite)
(with-output-to-file "robot-log.txt"
(lambda () (printf (string-append whatToWrite "\r\n" ))) #:exists 'append)))
了解我们在使用 with-output-to-file 时如何使用“exists”可选参数。我们不确定如何使该可选参数与 IronScheme 一起使用。有什么方法可以让它发挥作用,或者其他方法吗?
请注意,我们希望将字符串附加到现有的 .txt 文件中。如果我们不使用可选参数,则会抛出错误,指出文件已存在。
IronScheme 支持 R6RS :)
file-options
不可用with-output-to-file
,所以你需要使用open-file-output-port
.
示例(不正确):
(let ((p (open-file-output-port "robot-log.txt" (file-options no-create))))
(fprintf p "~a\r\n" whatToWrite)
(close-port p))
Update:
以上将not工作。您似乎发现了 IronScheme 中的一个错误。但从 R6RS 来看还不清楚什么file-options
如果有的话,应该表现得像附加一样。我将进行更多调查并提供反馈。
更新2:
我曾与 R6RS 的一位编辑交谈过,它似乎没有一种可移植的方式来指定“附加模式”。当然,我们在 .NET 中提供了此功能,因此我将通过添加另一个来解决此问题file-options
用于追加。我还会考虑为“简单 io”过程添加一些重载来处理这个问题,因为使用上面的代码相当乏味。感谢您发现问题!
更新3:
我已经解决了这个问题。从 TFS 修订版 114008 开始,append
已添加到file-options
. Also, with-output-to-file
, call-with-output-file
and open-output-file
有一个附加的可选参数来指示“追加模式”。您可以从以下位置获取最新版本http://build.ironscheme.net/ http://build.ironscheme.net/.
Example:
(with-output-to-file "test.txt" (lambda () (displayln "world")) #t)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)