Urs*_*jor 2 oop matlab matlab-class
为什么我收到错误:
??? 使用==> ensureCellType时出错输入参数太多.
错误==> usage_dynamicVariableNaming at 11 result = 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
Run Code Online (Sandbox Code Playgroud)
谢谢你的大力帮助.它现在运行,但未插入数据.
我在这个新问题上开始了一个新线程: 数据未成功插入到对象中
除非你打算ensureCellType成为一个静态方法(在这种情况下你应该声明它(Static=true),你应该给它签名cellData = ensureCellType(obj,value).)obj在方法中给你一个对象本身的引用.
你得到的错误是因为MATLAB将对象本身传递value给你的方法,这是两个输入参数而不是一个.
如果您永远不需要obj在方法中引用,则可以将方法签名声明为cellData = ensureCellType(~, value).然后MATLAB将知道它应该有两个输入,但它可以忽略第一个输入.
| 归档时间: |
|
| 查看次数: |
3418 次 |
| 最近记录: |