单元格数组分配结果 returns 到 ans `object` 而不是预期的 object `obj`

Cell array assignment result returns to ans `object` instead of expected object `obj`

我在决定标题应该足够简单和表现力时遇到了麻烦。如果可以简化标题,请继续编辑。


我有一个 Modelclass,其中我有一个方法可以将 node.flow.Pipe object 添加到 ModelnodeArray (这是一个元胞数组)。

classdef Model

    properties

        nodeArray = {} 

    end

    ...        

    methods

        function result = Model()

        end

        function obj = addNode(obj, node)
            size = numel(obj.nodeArray);
            obj.nodeArray{size+1} = node;
        end

    ...
    end        
end

当我创建 Model object 和 node.flow.Pipe object 然后使用 ModeladdNode(node) 方法时,而不是添加object 的一个节点,Matlab 创建一个新的 object ans

>> newModel = Model

newModel = 

  Model with properties:

                       nodeArray: {}
                   numberOfNodes: 0
                   stateVariable: []
          numberOfStateVariables: 0
            steadyStateEquations: []
    numberOfSteadyStateEquations: 0

>> newModel.addNode(node.flow.Pipe)

ans = 

  Model with properties:

        nodeArray: {[1×1 node.flow.Pipe]}
    numberOfNodes: 1

>> newModel.nodeArray

ans =

  0×0 empty cell array

我做错了什么?

默认情况下,MATLAB 中的所有 class 都是 value classes 并且在您执行赋值时(按值)被复制。为了访问 classes my reference,您需要继承 MATLAB 的内置 handle class。

classdef Model < handle

documentation.

中对句柄和值 class 之间的区别进行了广泛的描述