再会!有什么方法可以告诉 matlab 我的函数的输入是一个字符串。例如thisisastring(11A)
我预期的输入是二进制字符串(010011101)和十六进制(1B)。你能帮我解决这个问题吗?
再会!有什么方法可以告诉 matlab 我的函数的输入是一个字符串。例如thisisastring(11A)
我预期的输入是二进制字符串(010011101)和十六进制(1B)。你能帮我解决这个问题吗?
要检查函数中参数的数据类型,并断言它们符合其他标准,如数组维度和值约束,请使用validateattributes。很方便,标准的matlab。
与许多语言不同,Matlab 是动态类型的。所以真的没有办法告诉 Matlab 一个函数总是会用一个字符串输入来调用。如果需要,您可以在函数开头检查输入的类型,但这并不总是正确的答案。因此,例如,在 Java 中,您可以编写如下内容:
public class SomeClass {
public static void someMethod(String arg1) {
//Do something with arg1, which will always be a String
}
}
在 Matlab 中,您有两种选择。首先,您可以假设它是一个字符串来编写代码,如下所示:
function someFunction(arg1)
%SOMEFUNCTION Performs basic string operations
% SOMEFUNCTION('INPUTSTRING') performs an operation on 'INPUTSTRING'.
%Do something with arg1, which will always be a string. You know
% this because the help section indicates the input should be a string, and
% you trust the users of this function (perhaps yourself)
或者,如果您偏执并想编写健壮的代码
function someFunction(arg1)
%SOMEFUNCTION Performs basic string operations
% SOMEFUNCTION('INPUTSTRING') performs an operation on 'INPUTSTRING'.
if ~ischar(arg1)
%Error handling here, where you either throw an error, or try
% and guess what your user intended. for example
if isnumeric(arg1) && isscalar(arg1)
someFunction(num2str(arg1));
elseif iscellstr(arg1)
for ix = 1:numel(arg1)
someFunction(arg1{1});
end
else
error(['someFunction requires a string input. ''' class(arg1) ''' found.'])
end
else
%Do somethinbg with arg1, which will always be a string, due to the IF statement
end