Matlab OOP:如何更新对象的属性

时间:2015-02-11 18:17:34

标签: matlab oop

classdef PortfolioX 
       properties 
          name; 
          anzahl=0; 
          myValue=0; 
          handeln; 
          preis=0; 
       end 

  function [this, portfolio1] = setAnzahl(this, portfolio1, AktienAnzahl, AktienPreis) 
  .... 
  this.preis = AktienPreis; 
  portfolio1.value = AktienAnzahl;
   ... 
   end
end



function StartTrading(DDD, Portfolio) 
%if text.mat 
load test.mat 
%end 

%Aktie = DDD; 
DDD.handeln = 'buy'; 
    %Anzahl an Aktien die gehandelt werden und deren aktueller Preis 
    [DDD, Portfolio] = setAnzahl(DDD, Portfolio, 200, 5); 

    save test.mat 
load test.mat 

现在我做了以下事情:

  1. 构造对象DDD和对象组合
  2. 我开始StartTrading(DDD, Portfolio)
  3. 结果:对象DDD和投资组合具有相同的属性值 构成。
  4. 我的预期,他们有更新的值(preis = 50和handeln ='buy')。 我的错是什么?谢谢!

1 个答案:

答案 0 :(得分:0)

您已在MATLAB中创建了一个值对象。将这些对象传递给函数时,会为它们创建一个副本。您可以在函数内修改这些副本。除非您返回这些副本,否则您只能在函数外部使用未修改的原始对象。

您可以从函数返回对象并将它们分配回相同的变量,或者通过继承handle来使用handle对象。请参阅比较http://www.mathworks.com/help/matlab/matlab_oop/comparing-handle-and-value-classes.html

处理句柄和值类的文档