Matlab中属性 set 方法
目录
属性 set 方法
属性 set 方法语法
每当给属性赋值时,MATLAB® 都会调用属性的 set 方法。
注意:不能直接调用属性访问方法。MATLAB 会在访问属性值时调用这些方法。
属性 set 方法具有以下语法,其中 PropertyName 是属性的名称。
对于值类:
methods
function obj = set.PropertyName(obj,value)
...
end
-
obj - 其属性被赋值的对象
-
value - 要赋给属性的新值
值类 set 函数必须将修改后的对象返回给调用函数。句柄类不需要返回修改后的对象。
对于句柄类:
methods
function set.PropertyName(obj,value)
...
end
使用属性 set 方法的默认方法特性。定义 set 方法的方法代码块无法指定属性。
验证属性设置值
使用属性 set 方法验证即将分配给属性的值。属性 set 方法可以在采取存储新属性值所需的任何操作之前,对输入值执行错误检查等操作。
classdef MyClass
properties
Prop1
end
methods
function obj = set.Prop1(obj,value)
if (value > 0)
obj.Prop1 = value;
else
error('Property value must be positive')
end
end
end
end
有关属性 set 方法的示例,参考将属性限制为特定值。
调用 set 方法时
如果存在属性 set 方法,则只要给该属性赋值,MATLAB 就会调用该方法。但是,在以下情况下,MATLAB 不会调用属性 set 方法:
-
从它自己的属性 set 方法中为属性赋值时不会调用,这样可以防止出现对 set 方法的递归调用。但是,由 set 方法调用的函数在进行属性赋值时会调用 set 方法。
-
MATLAB 在调用对象构造函数之前,在对象初始化期间为属性赋值时。
-
当 MATLAB 复制值对象(任何不是handle 的对象)时,MATLAB 在将属性值从一个对象复制到另一个对象时,不会调用 set 或 get 方法。
-
当属性的 AbortSet 特性为 true 时,如果为属性赋的值与其当前值相同,也不会调用 set 方法。
在构造函数中设置属性值
在构造函数中设置属性值会引发对属性 set 方法的调用。例如,PropertySetMethod 类定义 Prop1 属性的属性 set 方法。
classdef PropertySetMethod
properties
Prop1 = "Default String"
end
methods
function obj = PropertySetMethod( str )
if nargin > 0
obj.Prop1 = str;
end
end
function obj = set.Prop1(obj,str)
obj.Prop1 = str;
fprintf( 'set.Prop1 method called. Prop1 = %s\n', obj.Prop1 );
end
end
end
如果调用不带输入参数的类构造函数,MATLAB 则不会调用 set.Prop1 方法。
>> o = PropertySetMethod
o =
PropertySetMethod with properties:
Prop1: "Default String"
在构造函数中设置属性值会引发对属性 set 方法的调用。
>> o = PropertySetMethod("New string")
set.Prop1 method called. Prop1 = New string
o =
PropertySetMethod with properties:
Prop1: "New string"
如果将对象复制到另一个变量,MATLAB 不会调用属性 set 方法,即使赋值中的右侧对象使用属性的非默认值也是如此:
a = o;
a.Prop1
a.Prop1
ans =
"New String"
相关文章
- [转] HTML5中meta属性的使用详解
- Python获取类属性及其它(vim看源码常用、__dict__)
- Matlab中的默认属性值
- Matlab中访问属性值
- 【MATLAB教程案例85】通过matlab实现有限差分法求解微分方程
- 【MATLAB教程案例46】三维数据的插值和滤波处理matlab仿真
- 【MATLAB教程案例45】基于双目视觉的图像深度信息提取算法matlab仿真
- 【MATLAB教程案例43】初识matlab中三维数据处理相关函数——plot3,surf,mesh,isosurface,slice等
- 【MATLAB教程案例36~42总结】语音信号处理matlab仿真经验和技巧总结
- 【MATLAB教程案例40】语音信号的共振峰频率倒谱法估计matlab仿真学习
- 【MATLAB教程案例32】基于matlab的交通标志检测分割算法的仿真——形态学处理,膨胀,腐蚀,形状检测,颜色模型,小波滤波等知识的综合应用
- 【MATLAB教程案例11~20总结】优化类算法matlab仿真经验和技巧总结
- 【MATLAB教程案例13】基于SA模拟退火优化算法的函数极值计算matlab仿真及其他应用
- [转]浅谈jQuery EasyUI的属性设置
- java spring中对properties属性文件加密及其解密
- 【GIS】地下可视可操作属性
- @objc属性 (SwiftUI 中文手册文档教程)
- Vue知识点总结(7)——计算属性computed(超级详细)
- Matlab ------ 打开MATLAB,设置默认打开的文件夹
- Maven内置属性及使用
- Unity 之 图集属性详解和代码示例 -- 拓展一键自动打包图集工具
- 【Struts2学习笔记(3)】至Action注入属性值
- c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
- Django学习路21_views函数中定义字典及html中使用类实例对象的属性及方法
- C# 特性参数(注解属性加在参数前面)
- 浩辰3D「属性关联」,让设计数据触手可得!