Основной причиной изменения процесса сохранения и загрузки является поддержка обратной и прямой совместимости классов. Рассмотрите изменение процесса сохранения и загрузки, когда вы:
Переименовать класс
Удаление свойств
Задайте циклическую ссылку указателя объектов, где важен порядок инициализации
Должен вызвать конструктор с аргументами и, следовательно, не может использовать 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
функция по умолчанию не вызывает конструктор. Для получения дополнительной информации см. раздел «Инициализация объектов при загрузке».