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

如何刷新Octave对类方法的认知?自定义myobj类显示问题求助

解决Octave无法识别新增类方法的问题

Octave在加载类定义后不会自动监测类目录下的文件变化,所以你新增display.m后需要手动触发类定义的重新加载,下面是几种可行的解决方法:

  • 使用clear classes命令:在octave-cli中输入这个命令,它会清除所有已加载的类定义。之后重新实例化myobj时,Octave会重新扫描@myobj目录下的所有文件,包括你新增的display.m。操作步骤如下:
    octave:1> clear classes
    octave:2> o = myobj()
    
  • 确认类目录在搜索路径中:如果@myobj所在的父目录不在Octave的搜索路径里,即使添加了新文件也不会被识别。可以先用addpath命令把父目录加入路径,再执行clear classes:
    octave:1> addpath(".")  # 假设当前目录是@myobj的父目录
    octave:2> clear classes
    octave:3> o = myobj()
    
  • 重启Octave:如果上面的方法都没生效,最简单的方式就是关闭octave-cli再重新打开。重启后Octave会重新加载所有搜索路径下的类文件,自然会识别新增的display.m。

另外要提醒的是,你当前的display.m代码有问题,仅写p会导致运行报错,建议修改成能正确显示实例信息的实现,比如:

function display(obj)
  printf("myobj instance:\n");
  printf("  arg: %s\n", obj.arg);
end

修改后重新加载类再实例化,就能看到正常的实例输出了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:20:08