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

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

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

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

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

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

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

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

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

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

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

Реализация saveobj и loadobj Методы

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

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

Реализуйте метод saveobj как обычный метод (то есть, вызывание его требует экземпляра класса).

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

Используйте метод loadobj когда:

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

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

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

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

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

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

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

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

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

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

Похожие темы