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

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

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

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

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

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

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

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

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

save вызовы функции ваш класс saveobj метод прежде, чем выполнить операцию сохранения. save функция затем сохраняет значение, возвращенное saveobj метод. Можно использовать saveobj возвратить модифицированный объект или a 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 передачи a struct к loadobj. struct имена полей соответствуют именам свойства, извлеченным из файла.

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

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

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

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

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

Похожие темы