我使用工作表(不是文档模式)。我知道可以做Edit>Remove Output>From Worksheet
“从工作表中的所有执行组中删除Maple输出。”
但我找不到这样做的命令。我需要这样做,因为当我运行循环时
for i from 1 to n do
some_function();
od
上面的函数说打印到屏幕(即当前打开的工作表)很多信息,然后工作表变慢,我真的也不希望看到从任何方式累积的所有调用的日志记录。我只需要一次只能查看一次迭代的打印件。
(Maple在工作表中也有大量输出累积的其他问题,但这是另一个主题)。
我想做这样的事情
for i from 1 to n do
some_function();
delete_all_output_in_current_worksheet();
od;
因此,当some_function
正在运行时,只有一个调用的输出显示出来。
在Matlab中,使用clc可以轻松完成,它可以清除Matlab中的命令窗口。
在Maple中有类似的东西吗?
Windows上的Maple 2018.1。
没有编程方法来清除当前工作表的所有输出。
但是你可以将运行结果从some_function()
(每次循环)推送到嵌入式组件,例如。 TextBox,MathContainer等
您甚至不必从调色板手动插入此类组件。相反,您可以使用DocumentTools:-Tabulate
命令以编程方式在当前执行组之后插入一个列表的组件集合。
例如,作为工作表中的1D代码,您可以在三个单独的执行组中包含这些代码块。
restart;
和,
some_function:=proc(i)
int( sin(x)^i, x);
end proc:
Leafcutoff := 150:
和,
# Put all this in the same Execution Group
for i from 1 to 111 by 10 do
res[i] := some_function(i);
K := MmaTranslator:-Mma:-LeafCount(res[i]);
if K <= Leafcutoff then
L := res[i];
else
L := sprintf("LeafCount > %a",Leafcutoff);
end if;
DocumentTools:-Tabulate(
[["i","LeafCount","result"],
[sprintf("%a",i), K, L]],
':-weights'=[10,10,40],
':-fillcolor'=((T,i,jj)->`if`(i=1,"grey",
"white")),
':-widthmode'=':-pixels',
':-width'=600);
Threads:-Sleep(1.5); # delay at least 1.5 sec
end do:
DocumentTools:-Tabulate([[]]):
为了说明它正常工作,我放了1.5秒的延时。您可以调整或删除它。
最后一次调用Tabulate
只是在循环结束时将其清空。
由Tabulate
插入的GUI表实际上出现在执行组之后的区域中。每个执行组只出现一个这样的区域。基本上,每次调用Tabulate都会覆盖该区域。
如果你将end do:
更改为end do;
,那么所有常规输出也会像往常一样显示出来。