0
我有一个句柄类,例如下面的mclass
,它应该在具有相应输入参数的另一个函数内部构建。但是,我想检查类构造函数的输入参数在类本身的任何地方的构造函数中,并防止创建新的对象句柄,如果输入不是所需的类型。matlab oop - 我如何处理构造函数的输入?
classdef mclass < handle
properties
val
end
properties (Dependent)
sval
end
methods
function obj = mclass(varargin)
if nargin == 1
if isnumeric(varargin{1}) && varargin{1} > 0
obj.val = varargin{1};
else
errordlg('Invalid input', 'Constructor', 'modal');
end
else
errordlg('No input', 'Constructor', 'modal');
end
end
function s = get.sval(obj)
s = sqrt(obj.val);
end
end
end
然而,错误对话框调用m = mclass;
或m = mclass(0);
从命令窗口,在一起后,变m
仍然在工作区创建。我如何防止m
被创建?
当然,我可以在调用构造函数之前检查我的其他函数内部的输入,但无论如何要使其成为该类的“自检”特性?
是的,'错误'是我的一个解决方法,但是我可以让它完全发生在程序中吗?我的意思是,在命令窗口中不应该显示任何内容(特别是'error使用xxx(line yyy)'error'的错误),用户只需要知道他们错误地输入了什么,他们不需要关心在哪个函数中错误是...... – scmg
然后,您需要使用try,catch和wrap类创建内部另一个函数try,catch。我想不出另一种方式。 – Navan