|
200
|
| Nathan Fellman · 技术社区 · 15 年前 |
|
|
1
260
m文件中的第一个函数(即 main function ,在调用m文件时调用。它不是 必修的 主函数与m文件同名,但为了清晰起见, 应该 . 当函数和文件名不同时, 文件名 必须用于调用主函数。 m文件中的所有后续函数,调用 local functions (或旧术语中的“子函数”),只能由该m文件中的主函数和其他本地函数调用。其他m文件中的函数不能调用它们。从R2016B开始,您可以 add local functions to scripts 此外,尽管范围行为仍然相同(即只能从脚本中调用它们)。 此外,还可以声明函数 在内部 其他功能。这些叫做 nested functions ,并且只能从嵌套的函数中调用这些函数。它们还可以访问嵌套函数中的变量,这使得它们非常有用,尽管使用起来有点困难。 更多思考的食物…
有一些方法可以绕过上面概述的正常函数范围行为,例如传递
function handles
作为输出参数,如回答中所述
SCFrench
和
Jonas
(从R2013B开始,通过
例如,假设您有一个主函数
所有这些都超出了您的问题范围,可能比您需要的更详细,但我认为最好是触及到组织所有M文件的更普遍的关注点。;) |
|
|
2
74
通常,问题的答案是“否”,每个文件不能定义多个外部可见的函数。但是,您可以将函数句柄返回到本地函数,这样做的一个方便方法是将它们设置为结构的字段。下面是一个例子:
它的使用方法如下:
|
|
|
3
36
在单个文件中具有多个可单独访问的函数的唯一方法是定义
STATIC METHODS
使用
object-oriented programming
. 您可以访问函数
OOP功能只有在R2008A之后才得到官方支持,因此除非您想使用旧的、未记录的OOP语法,否则您的答案是“否”,解释如下 @gnovice . 编辑
在一个文件中定义多个可以从外部访问的函数的另一种方法是创建一个返回多个函数的函数
function handles
. 换句话说,您将定义函数称为
|
|
|
4
22
我真的很喜欢scfrench的答案-我想指出,可以很容易地修改它来导入函数 直接地 使用assignin函数进入工作区。(这样做会让我想起许多Python的“从y导入x”方法)
然后又用了:
|
|
|
5
8
与scfrench的答案相同,但更倾向于C型旋转。 我会(并且经常这样做)创建一个包含多个静态方法的类。例如:
因为方法是静态的,所以不需要对类进行实例化。调用函数如下:
|
|
|
6
4
我在一个.m文件中用八度线定义了多个函数,然后在需要使用该文件中函数的.m文件中使用命令:
不确定Matlab是否提供。
|
|
|
7
3
您还可以将一个主文件中的函数与如下所示的主函数组合在一起:
然后打电话 子基金会 如下所示: str=main('subfun1') |
|
|
8
0
截至2017年b月,这在官方上是不可能的。这个 relevant documentation 声明:
然而,其他答案中建议的解决方法也可以达到类似的效果。 |
|
|
9
-1
我试过了 SCFRench 并与 Ru Hasha 八度音阶 最后它起作用了: 但是我做了一些修改
可在其他“m”文件中调用:
更新: 我加了一个答案是因为 也不 +72和+20 工作 对我来说是八度音阶。 我写的那篇文章写得很好(上星期五我写这篇文章的时候做了测试)。 |