脚本中的函数无法识别

编程语言 2026-07-10

我似乎无法在脚本中定义函数(我通常把它们放在最后面)。

Nothing.m 的内容:

My_F();


function x = My_F()
  x= 43;
endfunction

输出:

error: 'My_F' undefined near line 1, column 1
error: called from
    Nothing at line 1 column 1

不过似乎在使用它之前定义函数是可行的。这与Matlab完全不同(据我所知,也与Octave的文档不同)。

示例:

1;

function x = My_F()
  x= 43;
endfunction

My_F()

现在脚本可以运行了。

我是不是漏掉了什么?

版本:Octave 11.1.0,安装于2026年 4月 10日,使用Homebrew。macOS 14.8.4。

解决方案

根据 官方文档——在GNU Octave解释器中,一旦定义了一个函数,就可以通过输入该函数的名称来让Octave对其进行求值。

从逻辑上讲,这意味着在GNU Octave中本地不能在函数被定义之前对其进行求值。

许多(并非全部)解释型语言会这样,因为它们按从上到下的顺序执行代码。

请注意,如果你把函数放在单独的文件中(如myfunctions.m),只要它位于同一目录或Octave的加载路径中,函数在被使用之前并不需要先定义。

【补充说明】某些语言或环境允许在函数尚未定义时就调用它们,通常是通过一种称为hoisting的机制(或其他方式)实现。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章