4

例如,当我从命令行启动脚本时,我想了解 GAP 的行为

$ gap mytest.gap

而不是从 GAP 内部调用它

gap> Read("mytest.gap");

特别是,我试图通过换行和缩进来抑制自动格式化。如果文件mytest.gap如下

SetPrintFormattingStatus( "*stdout*", false );
Print( Primes{[1..30]}, "\n" );

然后我在调用它时得到预期的行为Read(),即

[ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113 ]

从命令行启动它时,我仍然得到

[ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
  73, 79, 83, 89, 97, 101, 103, 107, 109, 113 ]

有人可以解释一下这种行为吗?GAP 对从命令行调用启动的脚本的处理是否记录在某处?我在手册中找不到它,但手册页确实usage: gap [OPTIONS] [FILES]只说明了如何处理选项的文档。

4

1 回答 1

4

恐怕目前无法完全禁用Print您尝试的方式的输出格式。

但是,您可以通过使用较新的流 API 和 来解决此问题PrintTo,如下所示:

s:=OutputTextUser();
SetPrintFormattingStatus( s, false );
PrintTo( s, Primes{[1..30]}, "\n" );

我在 GAP 问题跟踪器中将其记录为错误,也许我们可以在下一个版本中修复它(或者也许有人会解释为什么它“不是错误而是功能”;-)。

于 2017-05-08T09:55:34.263 回答