gpt4 book ai didi

matlab - 如何在 MATLAB 2013b 中创建自定义 setter 方法?

转载 作者:行者123 更新时间:2023-12-02 01:12:11 25 4
gpt4 key购买 nike

参加以下类(class)

classdef MyClass
properties (Access = public)
MyProperty;
end

methods
function this = MyClass()
% initialize the class
this.MyProperty = [];
this.LoadProperty(2,2);
end

function p = GetProperty(this)
p = this.MyProperty;
end

function this = LoadProperty(this, m, n)
% loads the property
this.MyProperty = zeros(m, n);
end
end
end

然后你调用:

obj = MyClass();
obj.GetProperty()

它将返回[]——这是构造函数方法中分配给MyProperty的第一个值。

LoadProperty 方法充当 setter,但它不设置任何内容。如何为 MyProperty 创建 setter?我有 C# 背景,这非常简单。 -> 已解决(见下文)

我怀疑这是引用和对象的问题,因为 MATLAB 始终将对象本身作为第一个参数发送给类的每个方法,而不是像 C# 那样仅发送引用。

提前谢谢您!

<小时/>

编辑:

如果我将 this.LoadProperty(2,2); 行更改为 this = this.LoadProperty(2,2);,它就可以工作。

现在,有没有一种方法可以在 MATLAB 中创建 void-return 方法,该方法仅设置类属性,就像 C#、C++、Java 等中通常所期望的那样?

最佳答案

将类定义(第一行)更改为:

classdef MyClass < handle

这通过继承 handle class 将类定义为具有引用语义。 。文档解释了差异:

关于matlab - 如何在 MATLAB 2013b 中创建自定义 setter 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18708724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com