Вывести значение переменной неизвестного типа без новой строки в Octave
Я хочу напечатать значение переменной 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>
напечатаны?
1 ответ
Вы действительно не можете этого сделать. 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
для записи в файл, а затем чтения из этого файла и соответствующей обработки новых строк. Но я считаю это перебором.