MATLAB - 函数优先级顺序



函数优先级顺序,简单来说,就是 MATLAB 遵循的一套规则,用于决定在有多个同名函数或变量时使用哪个。就像一个等级制度,MATLAB 用它来确定选择哪一个。

MATLAB 遵循以下优先级顺序:

变量

如果一个名称在当前工作区中被识别为变量,MATLAB 将将其用作变量。

示例

x = 5;
y = x + 2;

在这个示例中,x 是一个变量,MATLAB 识别它。

具有显式导入的函数或类

如果函数或类名称与显式导入的名称匹配,则它具有优先级。

示例

import MyPackage.myFunction;
result = myFunction();

这里,来自 MyPackage 的 myFunction 被显式导入并使用。

嵌套函数

当前函数内的函数优先。

示例

function outer()
   x = 10;
   function inner()
      x = 5;
   end
end

在这种情况下,inner 中的 x 优先于 outer 中的 x。

局部函数

当前文件内的函数具有优先级。

考虑以下脚本 myScript.m

示例

function result = myScript()
   x = 3;
   y = localFunction();
end

function z = localFunction()
   z = 7;
end

在这个示例中,使用同一文件中的 localFunction。

使用通配符导入的函数或类

如果一个函数与基于通配符的导入匹配,则它具有优先级,除了嵌套函数和局部函数。

示例

import MyPackage.*;  % Imports all functions in MyPackage
result = myFunction();

这里,如果 myFunction 通过通配符导入,则它具有优先级。

私有函数

名为“private”的子文件夹中的私有函数具有优先级。

在 MATLAB 中,私有函数是指专门设计用于单个 MATLAB 脚本或函数内部使用的函数,它们通常存储在与使用它们的脚本相同的文件夹中的名为“private”的子文件夹中。

% In the folder containing your script
/private/myPrivateFunction.m

当您在与这个“private”子文件夹相同的文件夹中有一个脚本时,位于“private”子文件夹中的任何函数都优先于位于其他地方的同名函数。

在上面的示例中,如果您在包含 myPrivateFunction.m 的“private”子文件夹的同一文件夹中有一个脚本,则 MATLAB 将优先使用该脚本中的 myPrivateFunction,这使得它成为组织和管理脚本特定函数的一种便捷方式。

对象函数

对象函数由输入参数的类决定。

object = MyClass();
result = object.myMethod();

在 MyClass 对象上调用的 myMethod 调用该特定对象函数。

MATLAB 根据输入参数的类确定使用哪个对象函数。当您在对象上调用函数时,例如 object.myMethod(),MATLAB 将自动调用与该对象类关联的方法。

这确保了对象的特定行为被执行,允许您与对象交互并根据其类和特征修改它们。

在上面的示例中,result = object.myMethod();,myMethod 是一个在 MyClass 类对象上操作的函数,当创建该类的对象时,MATLAB 会相应地使用它。

类构造函数

创建对象时,类文件夹中的构造函数优先。

myObj = MyClass();

这里,使用来自 @MyClass 文件夹的 MyClass 构造函数。

在 MATLAB 中的面向对象编程中,类构造函数是一个特殊的函数,用于创建类的实例,这些实例称为对象。当您使用类构造函数创建对象时,MATLAB 将优先考虑位于类文件夹中的构造函数,而不是其他同名函数。

这确保了该类的对象被正确初始化,并且可以在创建期间进行自定义。在您的示例中,myObj = MyClass();,MATLAB 特别使用位于 @MyClass 文件夹中的构造函数函数来初始化 myObj 对象,使其可以使用定义的类属性和方法。

加载的 Simulink 模型

如果 Simulink 模型已加载,则它们具有优先级。

在 Simulink 的上下文中,如果您在 MATLAB 会话中打开了多个 Simulink 模型或加载了多个 Simulink 模型,那么当您执行与 Simulink 相关的任务时,这些模型将优先于其他函数或变量。这确保了您的 Simulink 环境通过使用当前加载的模型中的组件和设置无缝运行,从而允许有效地进行建模和仿真,而不会受到无关函数或变量的干扰。它有助于维护 Simulink 工作的完整性和一致性。

当前文件夹中的函数

与您的脚本相同的文件夹中的函数优先。

这意味着,如果您在与您的脚本或 MATLAB 文件相同的文件夹中存储了函数,则这些局部函数优先。MATLAB 将选择当前文件夹中的函数,而不是 MATLAB 路径上其他位置的同名函数。这有助于确保您的代码使用适合您项目需求的特定局部函数。

路径上其他位置的函数

MATLAB 路径上的函数按其出现的顺序进行评估。

当 MATLAB 无法在当前文件夹中或通过其他特定优先级规则找到函数时,它会查看放置在其搜索路径上的函数。MATLAB 路径上的函数将被考虑,并且它们将按其在路径上的出现顺序进行评估。这提供了一种访问和使用不在当前文件夹中的函数的方法,从而方便地在各种项目中处理库和常用函数。

广告

© . All rights reserved.