【问题标题】:Octave: class and function file namesOctave:类和函数文件名
【发布时间】:2020-10-04 19:20:20
【问题描述】:

当我在 octave 中创建类或函数文件时。是否有可能给文件一个与类/函数名称不同的名称? (类 test 在文件 test.m 中,但我更愿意将文件命名为例如 test.class.m

# test.m
classdef test
  % ...
endclassdef

【问题讨论】:

  • 我要补充 Andrew 的回答,说 Octave 对使用 classdef 系统的所谓“新式”matlab 类的支持有限,而是更喜欢(并优化)“旧式”系统,依赖于“@folders”。有关详细信息,请参阅the relevant manual section

标签: function octave classname


【解决方案1】:

没有。按照 Octave 的设计方式,类和函数必须在文件名与类或函数名完全匹配的文件中定义。这样一来,给定一个函数或类名,Octave 知道在磁盘上的何处定位其定义,因此它可以在其他源代码需要时延迟加载它们的定义,而不必预先加载整个源代码树.

“命令行”函数是个例外,您可以在其中定义脚本内的全局函数,它们的定义会在脚本执行时出现。但是,这不是为大型项目组织代码的好方法,因为您需要在需要这些函数定义之前安排在适当的时间执行所有脚本。

如果您想将类与函数区分开来,您可以选择将它们粘贴到名为@<class> 的子目录中,例如@test/test.m

【讨论】:

  • 同时八度支持classdef classes。请注意,如果您还不知道,Google 不会告诉您太多信息——Google 中“octave 类”或“octave 面向对象编程”的最高结果都指向过时版本的文档,早于@987654326 @支持。
  • 这是 Octave 的 googlejuice 的一个问题:其中太多指向旧版本,虽然设置了“doc/current/” URL,但它是对当前版本的重定向,所以我认为 googlejuice 应归于该特定版本。在 Octave 维护者邮件列表中对此进行了一些讨论:lists.gnu.org/archive/html/octave-maintainers/2020-07/… 对我来说,“octave class”的#2 和 #4 Google 点击实际上是“classdef Classes (Octave 4.4.1)”。这不是给你的吗?
  • 现在可以了,就像 #2 一样。以前可能是一样的。我可能有点太习惯于谷歌给出正确的优先级,并首先假设第一个结果给出了一个完整的画面......使用 python,由于 Py2/Py3 二分法,问题更加明显,并且由于帮助页面包含“选择python版本”下拉菜单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 2019-05-29
相关资源
最近更新 更多