11.10函数文件

除了简单的一次性程序外,每次需要时都必须定义所需的所有函数是不现实的。相反,您通常希望将它们保存在一个文件中,以便轻松编辑它们,并保存它们以备日后使用。

Octave不要求您在使用函数定义之前先从文件中加载它们。您只需要将函数定义放在Octave可以找到它们的地方。

当Octave遇到未定义的标识符时,它首先查找已经编译并当前列在其符号表中的变量或函数。如果在那里找不到定义,则会搜索目录列表(路径)对于以结尾的文件.m具有与未定义标识符相同的基本名称。5一旦Octave找到一个名称匹配的文件,就会读取该文件的内容。如果它定义了single函数,它被编译和执行。详见脚本文件,了解有关如何在一个文件中定义多个函数的详细信息。

当Octave从函数文件中定义函数时,它会保存读取的文件的全名和文件上的时间戳。如果文件上的时间戳发生更改,Octave可能会重新加载该文件。当Octave以交互方式运行时,时间戳检查通常在每次Octave打印提示时最多进行一次。如果当前工作目录发生更改,也会搜索新的函数定义。

通过检查时间戳,您可以在Octave运行时编辑函数的定义,并自动使用新的函数定义,而无需重新启动Octave会话。

为了避免通过检查不太可能更改的时间戳函数而不必要地降低性能,Octave假设目录树中的functionfileOctave原点/份额/Octave/版本/m不会更改,因此不必每次使用这些文件中定义的函数时都检查它们的时间戳。这通常是一个非常好的假设,并且为使用Octave分发的函数文件提供了显著的性能改进。

如果您知道在运行Octave时您自己的函数文件不会更改,则可以通过调用ignore_function_time_stamp(“全部”),这样Octave将忽略所有函数文件的时间戳。经过系统到该函数将重置默认行为。

 
: edit name
: edit field value
: value = edit ("get", field)
: value = edit ("get", "all")

编辑命名函数,或更改编辑器设置。

如果编辑以文件或函数的名称作为参数调用,它将在定义的文本编辑器中打开编辑器.

  • 如果函数name在您路径上的文件中可用,然后它将在编辑器中打开。如果未找到任何文件,则使用m-filevariant,以结尾.m,将被考虑。如果仍然找不到文件,则带有前导的变体@然后用两个aleading@和拖尾.m将被考虑。
  • 如果name是命令行函数的名称,则将创建一个m文件来包含该函数及其当前定义。
  • 如果name.cc则它将搜索name.cc在路径中,然后在编辑器中打开它。如果找不到文件,则使用新的.cc将创建文件。如果name恰好是一个m文件或命令行函数,那么该函数的文本将作为注释插入.cc文件中。
  • 如果name.ext在您的路径上,则它将被编辑,否则编辑器将以name.ext在当前目录中作为文件名。

    警告您可能需要清除name在新的定义可用之前。如果您正在编辑.cc文件,则需要执行mkoct文件name.cc在定义可用之前。

如果编辑使用调用fieldvalue变量,控制字段的值field将设置为value.

如果指定了输出参数,而第一个输入参数为get然后编辑将返回控制字段的值field。如果控制字段不存在,编辑将返回包含所有字段和值的结构体。因此编辑(“获取”,全部的)返回完整的控制结构体。

使用以下控制字段:

著者

这是要放在新函数的“##作者:”字段后面的名称。默认情况下,它从壁虎密码数据库的字段。

电子邮件

这是要在“作者”字段中的名称后面列出的电子邮件地址。默认情况下,它猜测<$LOGNAME@$HOSTNAME>,如果$HOSTNAME未定义它使用uname-n。你可能想推翻这一点。一定要使用格式.

许可证
gpl

GNU通用公共许可证(默认)。

bsd

BSD风格的许可证,无广告条款。

pd

公共field。

文本

您自己的默认版权和许可证。

除非您指定pd’,编辑将在版权声明前加上“版权(C)YYYY作者”。

模式

该值确定编辑器是应在异步模式(编辑器在后台启动,Octave继续)还是同步模式(Octave等待直到编辑器退出)下启动。将其设置为同步以同步模式启动编辑器。默认为异步详见系统).

就地编辑

确定是否应在位编辑文件,而不考虑文件是否可修改。默认为真的。将其设置为错误的将只读函数文件自动复制到,如果存在,则在编辑它们时。

此值表示在编辑器中打开系统m文件之前应将其复制到的目录。这样做的目的是,这个目录也在路径中,这样系统函数文件的编辑副本就会覆盖原始文件。此设置仅在就地编辑设置为错误的。默认为空矩阵([]),这意味着它没有被使用。以前版本的Octave中的默认值为八度.

详见: 编辑器, 路径.

 
: mfilename ()
: mfilename ("fullpath")
: mfilename ("fullpathext")

返回当前正在执行的文件的名称。

返回当前执行的脚本或函数的基本名称时不带任何扩展名。如果从m文件外部(如命令行)调用,则返回空字符串。

给定参数完整路径,包括文件名的目录部分,但不包括扩展名。

给定参数fullpathext,包括文件名的目录部分和扩展名。

详见: inputname, dbstack.

 
: val = ignore_function_time_stamp ()
: old_val = ignore_function_time_stamp (new_val)

查询或设置内部变量,该变量控制Octave每次查找函数文件中定义的函数时是否检查文件上的时间戳。

如果内部变量设置为系统,Octave不会自动重新编译的子目录中的函数文件Octave原点共有版本/m如果它们自上次编译以来发生了更改,但如果更改,将重新编译搜索路径中的其他函数文件。

如果设置为全部的,Octave不会重新编译任何函数文件,除非使用删除了它们的定义清楚的.

如果设置为没有一个,Octave将始终检查文件上的时间戳,以确定是否需要编译函数文件中定义的函数。


脚注

5.

这个.m后缀是为了与兼容而选择的MATLAB.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号