使用类方法更新对象中的属性

时间:2012-01-29 23:17:48

标签: oop matlab constructor handle

在询问我的previous question后,我遇到了一种情况,即我使用存储在彼此属性中的几个对象类来保持对多个字段和方法的访问。例如

classdef Class1

    properties
        Class1Prop % A property accessible from Class1
        Class2     % A cell array of class 2 objects
    end

    methods
        % Construct the class with all of its properties
        function self = Class1()

        end

        function Class1Method
            self.Class1Prop = ...
        end
    end
end

我填充Class1的一个对象,该对象包含一个Class2的单元格数组。现在我想让方法更改此对象内部的属性值。即。

    Class1{index}.Class2{index}.Class2Method 

执行一些计算现在将该值存储在该类的实例中。

如matlab文档中所述:

  

“如果函数修改了作为输入参数传递的句柄对象,   修改会影响原始引用的对象   并复制了句柄。“

为了获得我想要的功能,我必须使用值类(使用返回类对象的方法),以便更改方法调用返回的值。返回的值也可以分配:

Class1{index}.Class2{index} = Class1{index}.Class2{index}.Class2Method

然而,理想情况下

Class1{index}.Class2{index}.Class2Method

将更新Class2属性。 是我想要的功能。这可能吗?

1 个答案:

答案 0 :(得分:0)

Class1{index}.Class2{index} = Class1{index}.Class2{index}.Class2Method

是解决所述需求的理想方式。它可以通过使用由句柄类填充的值类来实现。