saveobj
自定义对象的保存过程
说明
示例
ContactEntry 类定义三个属性。该类定义将这些属性值保存在一个结构体中的 saveobj 方法,以及从保存的结构体中重新创建对象的 loadobj 方法。
classdef ContactEntry properties Name Email Cell end methods function s = saveobj(obj) s.Name = obj.Name; s.Email = obj.Email; s.Cell = obj.Cell; end end methods (Static) function obj = loadobj(s) if isstruct(s) newObj = ContactEntry; newObj.Name = s.Name; newObj.Email = s.Email; newObj.Cell = s.Cell; obj = newObj; else obj = s; end end end end
创建一个 ContactEntry 的实例并保存它。
a = ContactEntry;
a.Name = "Sandy Trent";
a.Email = "strent@notacompany.com";
a.Cell = "617-555-1212";
save("C:\yourpath\ContactFile.mat","a");修改 ContactEntry 以包含保留工作电话号码的新属性。
classdef ContactEntry properties Name Email Cell WorkPhone end properties (Transient,Hidden) SaveInOldFormat = false; end methods function s = saveobj(obj) s.Name = obj.Name; s.Email = obj.Email; s.Cell = obj.Cell; if ~obj.SaveInOldFormat s.WorkPhone = obj.WorkPhone; end end end methods (Static) function obj = loadobj(s) if isstruct(s) newObj = ContactEntry; newObj.Name = s.Name; newObj.Email = s.Email; newObj.Cell = s.Cell; if numel(fieldnames(s)) == 4 newObj.WorkPhone = s.WorkPhone; else newObj.WorkPhone = "unknown"; end obj = newObj; else obj = s; end end end end
loadobj方法已修改,以检查序列化结构体中的第四个字段。如果有第四个字段,loadobj会将WorkPhone属性设置为该值。否则,它将WorkPhone属性设置为"unknown"。新的瞬态隐藏属性
SaveInOldFormat使类用户能够指定是否以旧格式序列化该类的实例(不带WorkPhone属性值)。如果SaveInOldFormat是false,则saveobj方法仅保存WorkPhone值。
从内存中清除现有实例 a,并在该类的新定义下加载 a。修订后的 loadobj 方法将保存的数据识别为来自该类的旧版本,并适当地设置 WorkPhone。
clear a
load("C:\yourpath\ContactFile.mat","a")
aa =
ContactEntry with properties:
Name: "Sandy Trent"
Email: "strent@notacompany.com"
Cell: "617-555-1212"
WorkPhone: "unknown"
WorkPhone 创建该类的一个新实例,并且 saveobj 和 loadobj 方法都按照新类定义的预期保存和加载该值。输入参数
要序列化的对象。
输出参量
由 MATLAB® 传递给 save 函数的数据,可以是:
对象
存储在结构体中的属性名称和当前值
提示
实现
saveobj方法以使用标量对象或结构体。当您保存对象数组时,save对数组的每个元素调用saveobj。
版本历史记录
在 R2006a 之前推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)