You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gforth 0.7.3保存函数修改:支持新文件与已有文件保存

Gforth 0.7.3 保存功能扩展:支持新文件与已有文件保存

当前代码仅能保存至已存在的文件,无法创建新文件并保存。问题核心在于文件打开模式的选择——原代码使用的w/o模式仅支持覆盖已有文件,不会主动创建新文件。以下是修改后的完整实现:

27 constant ESC  \ 控制终端颜色转义序列
0 value handle
        
: 2>str ( n1 n2 -- cadr u) s>d <# #s bl hold 2drop s>d #s #> ;
        
: wr ( cadr n -- ) handle write-line throw ;
        
: wr-slot { x y } x y sarray count ?dup if
          x y 2>str wr wr 
      else drop 
      then ;
    
: COLORIZE ESC EMIT ." [" base @ >R 0 <# #S #> type R> base ! ." m" ; \ ASCII终端颜色控制
    
: getfname  ( -- cadr n) type pad 64 accept pad swap ;
    
: save 
    31 colorize s" Save to file: " 
    getfname  
    w/o create open-file  \ 修改:替换为支持创建新文件的打开模式
    ?dup if 
        nip 33 colorize s" Failed to open file." 0 colorize cr
        exit
    else 
        to handle
    then  
    ['] wr-array catch if 
        33 colorize s" Error while writing to file." 0 colorize cr
        handle close throw  \ 出错时确保关闭文件,避免资源泄漏
        error
    then  
    handle close throw ;

关键修改说明

  • 文件打开模式调整:将w/o替换为w/o create,该模式在Gforth 0.7.3中的行为是:
    • 文件不存在时自动创建新文件
    • 文件已存在时覆盖原有内容
    • 保持只写权限,完全匹配保存操作的需求
  • 错误处理优化:
    • 区分文件打开失败与写入失败的提示信息
    • 写入出错时先关闭文件再抛出错误,避免资源泄漏
    • 移除原代码中冗余的逻辑分支,简化执行流程

内容的提问来源于stack exchange,提问作者francois P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:02:45