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

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

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

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

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

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

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

Используйте import, чтобы импортировать функции пакета:

function myFunc
   import pkg.pkfcn 
   pkfcn(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

Похожие темы

Была ли эта тема полезной?