exponenta event banner

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

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

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

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

  • Удалить свойства

  • Определение циклической ссылки на объекты-дескрипторы, для которых важен порядок инициализации

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

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

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

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

load вызывает ваш класс loadobj после загрузки объекта. 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. struct имена полей соответствуют именам свойств, извлеченным из файла.

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

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

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

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

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

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