如何刷新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
相关产品推荐
相关产品推荐

