Создание и псевдонимы класса управления

Искажение класса позволяет вам переименовывать классы при поддержании обратной совместимости с кодом и MAT-файлами, которые используют одни или несколько более старых имен классов. В действительности, MATLAB® распознает больше чем одно имя за тот же класс. matlab.alias.AliasFileManager обеспечивает API для создания и поддержания файлов определения псевдонима. Рекомендуемый процесс для создания и поддержания файлов псевдонима должен использовать функции, чтобы автоматизировать процесс. Чтобы совместно использовать код, который включает классы, которые были переименованы с помощью искажения, включайте одно из следующего:

  • Создающая псевдоним функция в скрипте настройки вашего приложения или тулбокса

  • Сам файл определения псевдонима

Пример Создает Файл Псевдонима Класса, показывает функцию, которая создает файл псевдонима, который задает переименование одного класса. Можно также переименовать класс многократно или переименовать несколько классов целиком.

Переименуйте класс многократно

Пример Создает Файл Псевдонима Класса, показывает, как создать файл определения псевдонима, который переименовывает FirstName к SecondName. Переименовать класс снова в ThirdName, ThirdName.m файл класса должен быть в Work, и SecondName.m файл должен быть удален. (MATLAB выдает предупреждение когда SecondName.m больше не присутствует.)

Work folder structure with class renamed twice, script, and alias file

Переименовать класс, который уже имеет один или несколько существующих псевдонимов, addAlias метод должен взять все предыдущие имена в качестве входных параметров в порядке от самых старых до новейших. В этом случае, "ThirdName" новое имя и ["FirstName","SecondName"] список старых названий. Эта версия createAliasFIle также включает location аргумент в AliasFileManager конструктор, потому что файл псевдонима уже существует.

function createAliasFile
    fileMgr = matlab.alias.AliasFileManager(pwd);
    addAlias(fileMgr,NewName="ThirdName",OldNames=["FirstName","SecondName");
    writeAliasFile(fileMgr);
end

Измените текущую рабочую директорию в Work папка и вызов createAliasFile.

createAliasFile

Инстанцирование класса с помощью псевдонимов и текущего имени показывает, что все три распознаны ThirdName.

oldest = FirstName
older = SecondName
new = ThirdName
oldest = 

  ThirdName with no properties.


older = 

  ThirdName with no properties.


new = 

  ThirdName with no properties.

Переименуйте несколько классов в одной функции

Можно также переименовать несколько классов с помощью одного AliasFileManager экземпляр. Это изменило createAliasFile функционируйте использует множественные вызовы addAlias метод, чтобы включать больше чем один класс в итоговый файл определения псевдонима. Родительской папкой этих двух определений классов является C:/Work.

function createAliasFile
    fileMgr = matlab.alias.AliasFileManager;
    addAlias(fileMgr,...
        NewName="myapp.ImageCropper",...
        OldNames="myapp.inprogress.ImageCropper");
    addAlias(fileMgr,...
        NewName="myapp.ImageDenoiser",...
        OldNames="myapp.inprogress.ImageDenoiser");
    writeAliasFile(fileMgr);
end

Измените текущую рабочую директорию в Work папка и вызов createAliasFile.

createAliasFile

Work folder structure with two classes, script, and alias file

Функция искажения не поддерживает непосредственно переименовывающие пакеты. Чтобы переименовать пакет, необходимо переименовать каждый класс в том пакете, как показано в этом примере.

Поскольку fileMgr ограничен по объему к функции, создайте другой экземпляр AliasFileManager использование location параметр, чтобы получить доступ к определениям псевдонима. Доступ к Aliases свойство нового экземпляра видеть, что сводные данные класса искажают определения.

aliasFile = matlab.alias.AliasFileManager("C:\Work")
aliasFile.Aliases
aliasFile = 

  AliasFileManager with properties:

    Aliases: [1×2 matlab.alias.AliasDefinition]


ans = 

1×2 AliasDefinition array showing old and new names:

          New Name                     Old Name(s)           
    _____________________    ________________________________

    "myapp.ImageCropper"     "myapp.inprogress.ImageCropper" 
    "myapp.ImageDenoiser"    "myapp.inprogress.ImageDenoiser"