我在决定标题时遇到了麻烦,标题应该足够简单和富有表现力。如果您可以简化标题,请继续编辑它。
我有一个Model
类,其中我有一个将node.flow.Pipe
对象添加到Model
的nodeArray
(这是一个单元格数组(中的方法。
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
对象并node.flow.Pipe
对象,然后使用Model
的addNode(node)
方法时,Matlab 不是向该对象添加节点,而是创建一个新的对象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 中的所有类都是值类,并且会在您执行赋值时复制(按值(。为了访问我的引用类,您需要从 MATLAB 的内置handle
类继承。
classdef Model < handle
文档中对句柄类和值类之间的区别进行了广泛的描述。