Импорт классов

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

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

Смотрите также

Похожие темы