2013-01-08 58 views
1

數據未成功插入。數據未成功插入對象

輸出:

dataHolder.variableNames =  [] 

當它應該是:

dataHolder.variableNames = [{'area_12345[<>]6789'}, {'apollo123'}, {'guruX'}, {'ok'}]; 

%用法:

elementNames = {'area_12345[<>]6789', 'apollo123', 'guruX', 'ok'}; 
elementTypes = {'string', 'specialChar', 'int', 'float'}; 
elementValues = {'charlie', 'vvv', '09', '123.321'}; 

dataHolder = dynamicVariableNaming; 

str = 'test'; 
result = dataHolder.ensureCellType(str); 


for i = 1:3 
    dataHolder.addVariables(elementNames(i), elementTypes(i), elementValues(i)); 
end 

dataHolder.variableNames 

%%% CLASS 

classdef dynamicVariableNaming 
%HELLO Summary of this class goes here 
% - 

    properties   
      variableNames = [];   

      variableValues = []; 
      variableTypes = []; 
    end 

    methods (Access = public) % (Access = private) 
      function obj = dynamicVariableNaming (variableName, variableValue, variableType) 
      % class constructor 
       if(nargin > 0) 
       obj.variableNames = variableName;     

       obj.variableValues = variableValue; 
       obj.variableTypes = variableType; 
       end 
      end 
% end 
%    
% methods (Static = true) 
      function addVariables (obj, variableName, variableValue, variableType) 

       obj.variableNames = [obj.variableNames ensureCellType(obj, variableName)];     

       obj.variableValues = [obj.variableValues ensureCellType(obj, variableValue)]; 
       obj.variableTypes = [obj.variableTypes ensureCellType(obj, variableType)]; 
      end    

      function cellData = ensureCellType(obj, value) 

      if (~strcmp(class(value), 'cell')) 
       cellData = {value}; 
       % cell2string(value); 
      else 
       cellData = value; 
      end 
      end    

    end 
end 
+0

我同意@HighPerformanceMark。 Hovewer,你的bug很簡單...看我的回答 – KlausCPH

回答

2

,你在需要時您不必返回改變opbject從addVariables方法正在與非handle對象合作。請記住,與其他參考傳遞語言相比,matlab有所不同。

要修復它無論是從handle類使類enherit,或從addVariables

廣東話返回obj說,如果有代碼,由於其較差的格式,並不能在MATLAB運行的其他問題(不平衡端,缺少構造函數等)

+0

你做到了,KlausCPH! 哇。 請原諒,我是Matlab OO的新手。該語法與C#,Java等有幾處不同之處。 我非常感謝。 謝謝你,KlausCPH。 –

+1

很高興幫助。這種差異幾乎每個人都會遇到新的Matlab OO。 Mathworks知道它,所以Matlab的新版本確實會對此提出警告。 – KlausCPH