主要内容

属性集的方法

属性访问方法概述

有关属性访问方法的概述,请参见属性访问方法

属性设置方法语法

MATLAB®每当给属性赋值时,调用属性的set方法。

请注意

不能直接调用属性访问方法.MATLAB在访问属性值时调用这些方法。

属性集方法具有以下语法,其中PropertyName是属性的名称。

对于值类:

方法函数obj =。PropertyName(obj,值)……结束
  • obj—属性被赋值的对象

  • 价值—分配给属性的新值

值类集合函数必须将修改后的对象返回给调用函数。句柄类不需要返回修改后的对象。

对于句柄类:

方法函数集。PropertyName(obj,值)……结束

对属性集方法使用默认方法属性。定义set方法的方法块不能指定属性。

验证属性设置值

使用属性集方法验证分配给属性的值。属性集方法可以在采取存储新属性值所需的任何操作之前,对输入值执行错误检查等操作。

classdefMyClass属性Prop1结束方法函数obj = set.Prop1 (obj,值)如果(值> 0)Prop1 =价值;其他的错误(“属性值必须为正”结束结束结束结束

有关属性集方法的示例,请参见将属性限制为特定的值

当调用Set方法时

如果存在一个属性集方法,MATLAB将在给该属性赋值时调用该方法。但是,MATLAB在以下情况下不调用属性集方法:

  • 从属性集方法内部将值赋给属性,以防止对set方法的递归调用。但是,由set方法调用的函数进行的属性赋值会调用set方法。

  • 在调用对象构造函数之前,MATLAB在对象初始化期间给属性赋一个默认值。

  • 当MATLAB复制一个值对象(任何不是处理), MATLAB在将属性值从一个对象复制到另一个对象时不调用set或get方法。

  • 对属性值进行的与当前值相同的任何赋值AbortSet属性是真正的.看到当属性值不变时赋值有关此属性的更多信息。

在构造函数中设置属性值

在构造函数中设置属性值将导致调用属性集方法。例如,PropertySetMethod类定义的属性集方法Prop1财产。

classdefPropertySetMethod属性Prop1 =“默认字符串”结束方法函数obj = PropertySetMethod(str)如果Nargin > 0 obj。Prop1 = str;结束结束函数obj = set.Prop1(obj,str)Prop1 = str;流(的设置。Prop1方法调用。Prop1 = % s \ n 'obj。Prop1);结束结束结束

如果不带输入参数调用类构造函数,MATLAB不会调用集。Prop1方法。

>> o = PropertySetMethod
o = PropertySetMethod with properties: Prop1: "Default String"

在构造函数中设置属性值将导致对属性集方法的调用。

>> o =“新字符串”
集。Prop1方法调用。o = PropertySetMethod with properties: Prop1: "New string"

如果你将对象复制到另一个变量,MATLAB不会调用属性集方法,即使右边对象在赋值中使用了该属性的非默认值:

一个= o;a.Prop1
a.Prop1 ans = "New String"

相关的话题