在构造函数以外的其他函数中设置类变量



这可能是一个非常基本的问题,但我在互联网上没有找到任何东西。 我正在编写一个 matlab 类,它具有各种类属性。我正在设置所有这些(有些带有输入参数,有些带有默认值(。 我在另一个类方法中更改了一个类变量。 这不起作用(变量在函数范围之外时被删除(。 解决这个问题的最佳方法是什么? 把所有东西都放在构造函数中?

classdef MyClass
properties
matrix1
matrix2
matrix3
end
methods
function obj = MyClass()
obj.matrix1 = zeros(2)
obj.matrix2 = ones(3)
end
function obj = func(obj)
obj.matrix2 = 3*ones(3)
end
function obj = func2(obj)
obj.matrix3 = obj.matrix2 %this does not work. matrix2 has its original value, not 3*ones(3)
end
end
end

我称之为

object = MyClass()
object.func()
object.func2()

MATLAB 同时支持值类型和引用类型类。

按照您定义类的方式,它本质上是一种值类型,这意味着每个函数调用都使用对象的副本,并且不引用调用对象的数据。

要使类表现为引用类型,然后根据需要修改对象的数据,请从handle继承您的类。

做:

classdef MyClass < handle
% Everything else same here...
end

相关内容

  • 没有找到相关文章

最新更新