strprint
Распечатайте в строку
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
strprint(<All>, <Unquoted>, <NoNL>, <KeepOrder>, object1, object2, …
)
strprint(objects)
возвращает строку, которую print(objects)
отобразил бы на экране.
strprint
возвращает строку, которая содержит вывод print
, отправил бы на экран для тех же аргументов. Эта строка содержит символы `\n'
, если вывод состоял бы из нескольких строк.
В системах Windows® каждому \n
предшествует \r
, потому что это - традиционная комбинация конца строки, поскольку это - комбинация конца строки, наследованная от CP/M. Примеры в этой документации принимают систему как UNIX®. Также обратите внимание, что с Набором активированного, \r
, \n
, \t
и \b
не будут отображены в строке.
Все опции и зависимости от переменных интерпретированы, как описано в документации print
. Особенно, это означает, что PRETTYPRINT
влияет на вывод strprint
. Перегрузка print
учтена. Смотрите ?print
для деталей.
strprint
чувствителен к переменным окружения DIGITS
, PRETTYPRINT
и TEXTWIDTH
, и к выходным настройкам Pref::floatFormat
, Pref::keepOrder
и Pref::trailingZeroes
.
Строка, возвращенная strprint
, когда распечатано с опцией Unquoted
, приводит к тому же выводу, как операнды имели бы во-первых:
s := strprint(a*x^2-7): print(Unquoted, s)
2 a x - 7
Это может использоваться, чтобы объединить несколько выходных параметров:
s1 := strprint(a*x^2-7): s2 := _concat("-" $ TEXTWIDTH)."\n": s3 := strprint(sin(1/x)): print(Unquoted, s1.s2.s3)
2 a x - 7 --------------------------------------------------------------------------- / 1 \ sin| - | \ x /
В примере выше, вы видите, что вывод strprint
не содержит пробелы, обычно используемые для центрирования. Вывод в первом примере был сосредоточен, потому что это использовало только часть текстовой ширины, в то время как строка s1.s2.s3
во втором примере охватывает общую ширину строки и поэтому распечатан выравнивание по левой границе.
В демонстративных целях давайте запишем область, которая помещает выражение в поле. Мы используем то, что strprint
возвращает строки начиная с новой строки output::fence
и индексируемого присвоения на строки:
domain box print := proc(e) local ex, str, w; save TEXTWIDTH; begin if TEXTWIDTH > 15 then TEXTWIDTH := TEXTWIDTH - 4; end_if; ex := extop(e, 1); str := strprint(All, ex); w := str[5]+4; str := output::fence("| ", " |", "\n".str[1]."\n", str[5], str[6]+1); str[1..w] := "+"._concat("-"$w-2)."+"; str[-w-1..-2] := "+"._concat("-"$w-2)."+"; str; end_proc; new := x -> new(dom, x); end_domain
print(Plain, box(a), box(sin(1/x)))
+----------+ +---+ | / 1 \ | | a |, | sin| - | | +---+ | \ x / | +----------+
print(Plain, box(box(hold(E=m*c^2))))
+--------------+ | +----------+ | | | 2 | | | | E = m c | | | +----------+ | +--------------+
Как последний пример, мы реализуем метод печати для матриц по ℤ 5:
M5 := Dom::Matrix(Dom::IntegerMod(5))
Функция стандартного вывода просто помещает “mod 5” позади каждой записи, наследованной от выходного метода Dom::IntegerMod(5)
:
A := M5([[1,2,3,4],[5,6,7,8],[-2,-3,0,1]])
Мы теперь заменяем этот метод:
M5::print := proc(A) local str, h1, w1, h, w, b; begin [str, h1, w1, h, w, b] := strprint(All, expr(A)); _concat(str, " " $ w, "[mod 5]"); end_proc:
print(A):
/ 1, 2, 3, 4 \ | | | 0, 1, 2, 3 | | | \ 3, 2, 0, 1 / [mod 5]
Также мы можем установить [mod 5]
прямо ниже скобок:
M5::print := proc(A) local str; begin str := strprint(expr(A)); str[-1..-1] := " [mod 5]"; str end_proc:
print(A):
/ 1, 2, 3, 4 \ | | | 0, 1, 2, 3 | | | \ 3, 2, 0, 1 / [mod 5]
|
Любые объекты MuPAD® |
|
Когда опция
Пример 2 содержит пример кода, который использует эту информацию. |
|
Отобразите символьные строки без кавычек и с расширенными управляющими символами |
|
Как |
|
Отобразите операнды сумм (типа |
DOM_STRING
или список DOM_STRING
и пяти целых чисел.