2

エラーが発生するのはなぜですか。

??? ==>esureCellTypeの使用中にエラーが発生しました入力引数が多すぎます。

11での==>usage_dynamicVariableNamingのエラー結果=dataHolder.ensureCellType(str);

適切な数のパラメーターを渡すときは?

% USAGE:

clear all;
clc;

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);


%% 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(variableName)];                 

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

           function cellData = ensureCellType(value)       
            if (class(value) ~= 'cell') 
                cellData = cell2string(value);
            else
                cellData = value;
            end
           end            

   end   
end 

多大なるご協力をありがとうございます。これで実行されますが、データは挿入されません。

この新しい問題について新しいスレッドを開始しました: データがオブジェクトに正常に挿入されていません

4

1 に答える 1

6

静的メソッドにするつもりでない限りensureCellType(その場合は で宣言する必要があります。(Static=true)署名を付ける必要があります。メソッド内のオブジェクト自体への参照を提供します。cellData = ensureCellType(obj,value)obj

MATLAB がオブジェクト自体とvalue、1 つではなく 2 つの入力引数であるメソッドの両方を渡しているため、表示されるエラーが発生しています。

メソッド内でへの参照が必要ない場合はobj、メソッド シグネチャを として宣言できますcellData = ensureCellType(~, value)。次に、MATLAB は 2 つの入力が必要であることを認識しますが、最初の入力を無視することができます。

于 2013-01-07T13:03:15.143 に答える