函数优先顺序
本课题介绍MATLAB如何®确定当前作用域中的多个函数具有相同名称时调用哪个函数。当前范围包括当前文件、相对于当前运行函数的可选私有子文件夹、当前文件夹和MATLAB路径。
MATLAB使用以下优先顺序:
变量
在假设名称与函数匹配之前,MATLAB会在当前工作区中检查具有该名称的变量。
请注意
如果创建的变量与函数名称相同,MATLAB将无法运行该函数,直到从内存中清除该变量。
函数或类,其名称与显式导入的名称匹配
的
进口
Function允许使用复合名称(由点连接的几个部分组成的名称)的函数只调用复合名称的最后一部分。当函数名与显式(非通配符)导入的函数匹配时,MATLAB使用导入的复合名,并将其优先于具有相同名称的所有其他函数。当前函数中的嵌套函数
当前文件中的本地函数
函数或类,其名称与基于通配符的导入名称匹配
当函数名与基于通配符的导入函数匹配时,MATLAB使用导入的复合名,并将其优先于所有具有相同名称的其他函数,嵌套函数和局部函数除外。
私有函数
私人函数是子文件夹中的函数
私人
它位于当前运行文件的文件夹的正下方。对象的功能
对象函数在其输入参数列表中接受特定类型的对象。当有多个同名的对象函数时,MATLAB检查输入参数的类以确定使用哪个函数。
@文件夹中的类构造函数
MATLAB使用类构造函数来创建各种对象(例如
timeseries
或audioplayer
),并且可以使用面向对象编程定义自己的类。例如,如果您创建一个类文件夹@polynom
和一个构造函数@polynom / polynom.m
,构造函数优先于其他已命名的函数polynom.m
在路上的任何地方。加载仿真软件金宝app®模型
函数在当前文件夹
函数在路径的其他地方,按照出现的顺序
当确定同一文件夹内函数的优先级时,MATLAB考虑文件类型,顺序如下:
内置函数
MEX-function
金宝app未加载的Simulink模型文件,文件类型如下:
基金文件
MDL文件
Stateflow®图表附有
.sfx
扩展App文件(
.mlapp
)使用MATLAB应用程序设计器创建程序文件。
.mlx
扩展p文件(即,一个编码的程序文件
每分钟
扩展)程序文件。
00
扩展
例如,如果MATLAB找到一个00
文件和同一个文件夹中同名的p文件,它使用p文件。因为p文件不会自动重新生成,所以请确保在编辑程序文件时重新生成p文件。
的调用中包含函数名和输入,以确定MATLAB对特定输入调用的函数哪一个
函数。
函数优先顺序规则的更改
从R2019b开始,MATLAB改变了名称解析规则,影响变量、嵌套函数、局部函数和外部函数的优先顺序。有关更改和更新代码的技巧的信息,请参见R2019b的更新代码更改了函数优先顺序.
在函数中,标识符不能用于两个目的
没有显式声明的标识符可能不会被视为变量
变量不能在父函数和嵌套函数之间隐式共享
复合名称解析的优先级更改
匿名函数可以包括已解析的标识符和未解析的标识符
的行为进口
功能发生了变化。
更改基于通配符的导入的优先级
完全限定导入函数不能与嵌套函数具有相同的名称
完全限定导入与同名的外部作用域定义相关联
找不到导入时的错误处理
嵌套函数从父函数继承import语句