exponenta event banner

Импортировать классы

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

Импортируйте классы в функцию, чтобы упростить доступ к членам класса. Например, предположим, что существует пакет, содержащий несколько классов, и в функции будет использоваться только один из этих классов или статический метод. Используйте 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

См. также

Связанные темы