Octave 在不到处添加分号的情况下,防止以八度脚本打印输出?

Octave 在不到处添加分号的情况下,防止以八度脚本打印输出?,octave,Octave,默认情况下,Octave打印每个赋值的结果,这在终端上非常有用,对于调试数据评估脚本也非常有用。为了压制它, 然而,在处理脚本时,它也可能是一个主要的麻烦,忘记了分号,并且由于10000×10000矩阵的输出页面数超过了页面数,GUI中突然出现了严重的延迟 如果提供了明确的尾随,,是否有办法在默认情况下抑制输出,而不是仅回显赋值?是的,倍频程提供了静默函数 默认为false(即0) 您可以将其设置为1以使函数保持静默,也就是说,任何在函数中没有分号的求值都不会被打印 但是请注意,您所描述的内容(

默认情况下,Octave打印每个赋值的结果,这在终端上非常有用,对于调试数据评估脚本也非常有用。为了压制它,

然而,在处理脚本时,它也可能是一个主要的麻烦,忘记了分号,并且由于10000×10000矩阵的输出页面数超过了页面数,GUI中突然出现了严重的延迟


如果提供了明确的尾随
,是否有办法在默认情况下抑制输出,而不是仅回显赋值?

是的,倍频程提供了
静默函数

默认为false(即0)

您可以将其设置为1以使函数保持静默,也就是说,任何在函数中没有分号的求值都不会被打印

但是请注意,您所描述的内容(即以逗号终止)在启用时也不会显示输出。要在启用此功能的情况下故意显示功能的输出,必须使用
disp
命令

从文档中:

 -- silent_functions (NEW_VAL, "local")
 Query or set the internal variable that controls whether internal
 output from a function is suppressed.

 If this option is disabled, Octave will display the results
 produced by evaluating expressions within a function body that are
 not terminated with a semicolon.

 When called from inside a function with the "local" option, the
 variable is changed locally for the function and any subroutines it
 calls.  The original variable value is restored when exiting the
 function.


注:这也适用于脚本,但不适用于主控制台窗口。无论此设置如何,在live console中未以分号结尾的任何内容都将被打印。

否。使用分号作为默认指令terminator@matzeri这主要是为了防止我的环境挂起,因为我忘了在某处使用分号。即使将缺少的分号标记为语法错误也会更好。尽管如此,我同意matzeri的观点,这不一定是最佳实践。特别是如果你想分享你的脚本。这更多的是一种在交互会话期间的便利切换。可以作为一种解决方法,但我更希望使用JavaScript的
“use strict”--抑制所有非故意输出,甚至将其标记为需要解决的错误的东西。@kdb在运行时将其标记为错误将违反直觉,产生相反的效果,因为缺少分号可能是故意的<代码>静默函数
很难解决问题,它正是octave开发人员为您的问题设想的解决方案!除此之外,你所追求的似乎是一个“门楣”。我知道matlab在其GUI编辑器中提供了“linting”(即改进代码的建议)。。。不确定八度音是否能做到这一点,但我对此表示怀疑。话虽如此,在一行或注释结尾之前检测缺少的分号应该是非常简单的
grep
源代码。@kdb“use strict;”实际上是一个非常恰当的例子。ECMA团队大量警告“严格使用”;不是javascript的子集,但实际上改变了语言的语义,因此不应将其作为简单的“附加组件”来强制现有代码的“严格性”,因为它可能会破坏一些东西。如果octave要在其他有效的octave语法上强制执行错误,则必须附带类似的警告,说明它如何以神秘而奇妙的方式破坏代码。