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

Другие вопросы по тегам