主要内容

函数优先顺序

本课题介绍MATLAB如何®确定当前作用域中的多个函数具有相同名称时调用哪个函数。当前范围包括当前文件、相对于当前运行函数的可选私有子文件夹、当前文件夹和MATLAB路径。

MATLAB使用以下优先顺序:

  1. 变量

    在假设名称与函数匹配之前,MATLAB会在当前工作区中检查具有该名称的变量。

    请注意

    如果创建的变量与函数名称相同,MATLAB将无法运行该函数,直到从内存中清除该变量。

  2. 函数或类,其名称与显式导入的名称匹配

    进口Function允许使用复合名称(由点连接的几个部分组成的名称)的函数只调用复合名称的最后一部分。当函数名与显式(非通配符)导入的函数匹配时,MATLAB使用导入的复合名,并将其优先于具有相同名称的所有其他函数。

  3. 当前函数中的嵌套函数

  4. 当前文件中的本地函数

  5. 函数或类,其名称与基于通配符的导入名称匹配

    当函数名与基于通配符的导入函数匹配时,MATLAB使用导入的复合名,并将其优先于所有具有相同名称的其他函数,嵌套函数和局部函数除外。

  6. 私有函数

    私人函数是子文件夹中的函数私人它位于当前运行文件的文件夹的正下方。

  7. 对象的功能

    对象函数在其输入参数列表中接受特定类型的对象。当有多个同名的对象函数时,MATLAB检查输入参数的类以确定使用哪个函数。

  8. @文件夹中的类构造函数

    MATLAB使用类构造函数来创建各种对象(例如timeseriesaudioplayer),并且可以使用面向对象编程定义自己的类。例如,如果您创建一个类文件夹@polynom和一个构造函数@polynom / polynom.m,构造函数优先于其他已命名的函数polynom.m在路上的任何地方。

  9. 加载仿真软件金宝app®模型

  10. 函数在当前文件夹

  11. 函数在路径的其他地方,按照出现的顺序

当确定同一文件夹内函数的优先级时,MATLAB考虑文件类型,顺序如下:

  1. 内置函数

  2. MEX-function

  3. 金宝app未加载的Simulink模型文件,文件类型如下:

    1. 基金文件

    2. MDL文件

  4. Stateflow®图表附有.sfx扩展

  5. App文件(.mlapp)使用MATLAB应用程序设计器创建

  6. 程序文件。.mlx扩展

  7. p文件(即,一个编码的程序文件每分钟扩展)

  8. 程序文件。00扩展

例如,如果MATLAB找到一个00文件和同一个文件夹中同名的p文件,它使用p文件。因为p文件不会自动重新生成,所以请确保在编辑程序文件时重新生成p文件。

的调用中包含函数名和输入,以确定MATLAB对特定输入调用的函数哪一个函数。

函数优先顺序规则的更改

从R2019b开始,MATLAB改变了名称解析规则,影响变量、嵌套函数、局部函数和外部函数的优先顺序。有关更改和更新代码的技巧的信息,请参见R2019b的更新代码更改了函数优先顺序

  • 在函数中,标识符不能用于两个目的

  • 没有显式声明的标识符可能不会被视为变量

  • 变量不能在父函数和嵌套函数之间隐式共享

  • 复合名称解析的优先级更改

  • 匿名函数可以包括已解析的标识符和未解析的标识符

的行为进口功能发生了变化。

  • 更改基于通配符的导入的优先级

  • 完全限定导入函数不能与嵌套函数具有相同的名称

  • 完全限定导入与同名的外部作用域定义相关联

  • 找不到导入时的错误处理

  • 嵌套函数从父函数继承import语句

另请参阅

相关的话题