Main Content

将命名空间成员导入函数

在函数内部引用命名空间成员时,可以通过将命名空间成员导入函数中来简化对它们的访问。导入代码后,就不需要使用命名空间名称。

注意

此处使用的命名空间名称和成员仅用作示例。它们不是 MATLAB® 安装的一部分。要体验该功能,请在您自己的路径中定义这些文件夹和代码。

导入类、命名空间函数和静态方法

例如,使用 import 命令从命名空间 mynamesp 导入 MyClass。然后,您可以在函数内部引用 MyClass,而无需命名空间名称。

function exampleFunction
   import mynamesp.MyClass 
   obj = MyClass(arg,...);                   % call MyClass constructor
   obj.Prop = MyClass.staticMethod(arg,...); % call MyClass static method
end

相同的过程也适用于命名空间函数和静态方法,如以下示例所示。将代码导入函数使您能够在没有命名空间的情况下调用代码。

function myFuncA
   import mynamesp.myFunction 
   myFunction(arg,...); % call imported namespace function
end
function myFuncB
   import mynamesp.MyClass.myStaticMethod 
   myStaticMethod(arg,...); % call static method
end

您可以使用语法 mynamesp.* 导入命名空间中的所有代码。但是,由于这样做可能发生名称冲突,您应避免这种做法。有关详细信息,请参阅导入同名的命名空间成员

导入同名的命名空间成员

导入命名空间成员时要小心,避免名称冲突。例如,此文件夹层次结构包含具有相同名称 timedata 的命名空间函数和类方法。

+mynamesp/timedata.m           % namespace function
+mynamesp/@MyClass/MyClass.m   % class definition file
+mynamesp/@MyClass/timedata.m  % class method

导入命名空间并尝试对 MyClass 的实例调用 timedata

import mynamesp.*
myobj = MyClass;
timedata(myobj)

使用函数语法而不是圆点语法调用 timedata 会调用命名空间函数,因为 MATLAB 会先找到导入的函数。

清空导入列表

您无法从函数工作区中清除导入列表。但是,您可以使用 clear import 清空基础工作区。

另请参阅

相关主题