我的意思是打印未知类型的变量myvar
的值,用任意文本连接,不带换行符。
我知道如何在没有换行符的情况下打印:printf('My var = %<format specifier>, is it ok for you?', myvar)
,但这需要知道myvar
的类型。
我知道如何打印未知类型的变量的值:disp(myvar)
,但这总是打印一行换行符(此外,我不知道如何通过disp
进行连接(。
如何打印My var = <any variable>, is it ok for you?<no newline>
你真的不能这么做。Octave并不是真的那样工作。
然而,可以做的是准备好sprintf生成的字符串,可以将其插入到输出中。例如
var1 = 123; % double
var2 = 'abc'; % char
var3 = cell(); % cell
Var = var2; % choose from var1, var2, or var3
switch class(Var)
case {'double'}, FormattedStr = sprintf('Value is %d', Var);
case {'char'} , FormattedStr = sprintf('Value is %s', Var);
case {'cell'} , % ... etc
otherwise , FormattedStr = sprintf('Value is unknown');
end
fprintf( 'As I said before: %s', FormattedStr);
或者,您可以创建一个";toString"函数,该函数尝试检测类型并返回适当的字符串表示形式。
如果真的想使用disp的输出,那么理论上可以使用fdisp
写入文件,然后从该文件中读取并相应地处理换行符。但我认为这太过分了。