【发布时间】:2014-07-05 19:13:10
【问题描述】:
我有一个球拍程序(包括文件)的其他几个文件,其中一些文件包含我想使用主程序中的函数更新的球拍代码。 IE。这就是我要编辑的文件的样子(基本上)
(define somethings '(
(some list)
(some other list)
(yet another list)))
我希望能够在列表中添加更多内容,我认为有更好的方法可以做到这一点,但由于我是新手,所以我首先尝试了:
(define (update-file arg1 arg2 arg3 . args)
(call-with-output-file "somefile.rkt" #:exists 'append
(lambda (output-port)
(print "\b\b" output-port) ;; have tried several variations of this they all
(do other things) ;; print the backspaces literally rather than
(display "))" output-port) ;; removing characters
(newline output-port))))
我认为问题既是 A:我正在使用 append,它可能只是在最后粘贴东西(但更新和截断似乎不是答案)和 B:打印 \b 不能像我一样工作正在尝试使用它... :)
我现在正绝望地浏览 Racket 的文档,但我是编程新手,所以大部分内容还没有任何意义。是否有某种方法可以使该特定功能起作用,如果是的话,是否值得,或者是否有更好的方法来实现相同的结果?
非常感谢
【问题讨论】:
-
以编程方式编辑 S 表达式的最佳方法是将其视为数据结构(通过
reading 将其输入),更新它,然后将其写回(使用write) ,而不是将其视为一串文本。 -
@ChrisJester-Young 啊,谢谢更好的主意。我不确定具体如何实现,但我会弄清楚的。