Импортируйте классы

Синтаксис для импорта классов

Импортируйте классы в функцию, чтобы упростить доступ к членам класса. Например, предположим, что существует пакет, который содержит несколько классов, и вы будете использовать только один из этих классов или статический метод в вашей функции. Используйте import команда для упрощения кода. После импорта класса ссылка на имя пакета не требуется:

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

Импортируйте все классы в пакете с помощью синтаксиса pkg.*:

function myFunc
   import pkg.* 
   obj1 = MyClass1(arg,...); % call pkg.MyClass1 constructor
   obj2 = MyClass2(arg,...); % call pkg.MyClass2 constructor
   a = pkgFunction();  % call package function named pkgFunction
end

Импорт статических методов

Использовать import для импорта статического метода, чтобы можно было вызвать этот метод без использования имени класса. Звонить import с полным именем класса, включая любые пакеты, и статическим именем метода.

function myFunc
   import pkg.MyClass.MyStaticMethod 
   MyStaticMethod(arg,...); % call static method
end

Импортируйте функции пакета

Использовать import для импорта функций пакета, чтобы можно было вызвать эти функции без использования имени пакета. Звонить import с пакетом и именем функции.

function myFunc
   import pkg.pkgFunction 
   pkgFunction(arg,...); % call imported package function
end

Функции пакета и метод класса Конфликта по совпадению имен

Избегайте импорта целого пакета с помощью * синтаксис подстановочного знака. При этом импортируется неопределенный набор имен в локальные возможности. Например, предположим, что у вас есть следующая организация папок:

+pkg/timedata.m          % package function
+pkg/@MyClass/MyClass.m  % class definition file
+pkg/@MyClass/timedata.m % class method

Импортируйте пакет и вызывайте timedata на образце MyClass:

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

Вызов timedata находит функцию пакета, а не метод класса, потому что MATLAB® применяет import и находит pkg.timedata во-первых. Не используйте пакет в случаях, когда у вас есть конфликты по совпадению имен и вы планируете импортировать пакет.

Список импорта выравнивания

Вы не можете удалить список импорта из рабочей области функции. Чтобы очистить только базовое рабочее пространство, используйте:

clear import

См. также

Похожие темы