有两种本质上不同的类型classdef
类,其主要区别是关于变量赋值的行为。第一种类型是值类:
classdef value_class属性prop1 endproperties方法函数obj=set_prop1(obj,val)obj.prop1=val;endfunction endmethodsendclassdef
将该类的对象赋值给另一个变量本质上会创建一个新对象:
>>a=value_class();>>a.prop1=1;>>b=a;>>b.prop1=2;>>b.prop1⇒ ans=2>>a.prop1⇒ ans=1
但这也意味着,您可能必须手动将更改属性的方法的输出赋值回对象:
>>a=value_class();>>a.prop1=1;>>a.set_prop1(3);⇒ ans=<object value_class>>ans.prop1⇒ ans=3>>a.prop1⇒ ans=1
第二类是句柄类.那些类必须派生自抽象句柄
类
classdef handle_class<handle properties prop1 endproperties methods函数set_prop1(obj,val)obj.prop1=val;endfunction endmethodsendclassdef
在以下示例中,变量a
和b
引用类的同一对象handle_class
:
>>a=handle_class();>>a.prop1=1;>>b=a;>>b.prop1=2;>>b.prop1⇒ ans=2>>a.prop1⇒ ans=2
从句柄类的方法修改的对象属性会持续更改:
>>a.set_prop1(3);>>a.prop1⇒ ans=3
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号