Изменение процесса сохранения и загрузки

Когда изменять процесс сохранения и загрузки

Основной причиной изменения процесса сохранения и загрузки является поддержка обратной и прямой совместимости классов. Рассмотрите изменение процесса сохранения и загрузки, когда вы:

  • Переименовать класс

  • Удаление свойств

  • Задайте циклическую ссылку указателя объектов, где важен порядок инициализации

  • Должен вызвать конструктор с аргументами и, следовательно, не может использовать ConstructOnLoad

Как изменить процесс сохранения и загрузки

Самый универсальный метод для изменения процесса сохранения и загрузки - это реализация loadobj, и при необходимости saveobj методы для вашего класса. MATLAB® выполняет эти методы при вызове save или load на объекте класса.

save функция вызывает ваш класс saveobj способ перед выполнением операции сохранения. The save затем функция сохраняет значение, возвращаемое saveobj способ. Можно использовать saveobj для возврата измененного объекта или объекта struct который содержит значения свойств.

load вызывает ваш класс loadobj метод после загрузки объекта. The load функция загружает значение, возвращаемое loadobj метод в рабочую область. A loadobj метод может изменять загружаемый объект или восстанавливать объект из данных, сохраненных классом saveobj способ.

Осуществление saveobj и loadobj Методы

Реализуйте saveobj метод, который изменяет сохраняемый объект, а затем реализует loadobj метод для возврата объекта в правильное состояние при загрузке.

Реализуйте loadobj метод как Static метод, поскольку MATLAB может вызвать loadobj метод с struct вместо объекта класса.

Реализуйте saveobj метод как обыкновенный метод (то есть вызов требует образца класса).

MATLAB сохраняет имя класса объекта так, чтобы load может определить какие loadobj метод для вызова в случаях, когда ваш saveobj метод сохраняет только данные объекта в структуре. Поэтому класс должен быть доступен для MATLAB при загрузке объекта.

Использование loadobj метод, когда:

  • Определение класса изменилось с момента сохранения объекта, требуя изменения объекта перед загрузкой.

  • A saveobj метод изменил объект во время операции сохранения, возможно, сохранив данные в struct. Реализуйте loadobj метод восстановления объекта из выхода saveobj.

Дополнительные факторы

Когда вы решите изменить процесс сохранения и загрузки по умолчанию, имейте в виду следующие точки:

  • Если загрузка какого-либо значения свойства из MAT-файла приводит к ошибке, load передает a struct кому loadobj. The struct имена полей соответствуют именам свойства, извлеченным из файла.

  • loadobj должен всегда быть в состоянии принять struct как вход и возврат объекта, даже если нет saveobj или saveobj не возвращает struct.

  • Если saveobj возвращает struct, затем load всегда проходит, что struct на loadobj.

  • Объекты подкласса наследуют суперклассы loadobj и saveobj методы. Поэтому, если вы не реализуете loadobj или saveobj метод в подклассе, MATLAB вызывает только унаследованные методы.

    Если суперкласс реализует loadobj или saveobj метод, тогда подкласс может также реализовать loadobj или saveobj метод, который вызывает методы суперкласса. Для получения дополнительной информации см. раздел Сохранение и загрузка объектов из иерархий классов.

  • load функция по умолчанию не вызывает конструктор. Для получения дополнительной информации см. раздел «Инициализация объектов при загрузке».

Похожие темы