在脚本中定义时,Julia函数不';t打印输出
我有一个剧本:在脚本中定义时,Julia函数不';t打印输出,julia,Julia,我有一个剧本: function f(x,y) x+y end f(3, 4) 当我在实时终端上运行这个程序时(通过复制/粘贴),我得到了期望的结果7。但是如果我运行脚本,函数的输出将被抑制。为什么会这样?Julia与Matlab不同,它不会自动打印值(REPL会自动打印值,因为这就是它的用途:REPL=“read,eval,print loop”)。必须使用print或show显式打印值,例如show(f(3,4))。在这种情况下,print和show执行相同的操作,但通常它们的含
function f(x,y)
x+y
end
f(3, 4)
当我在实时终端上运行这个程序时(通过复制/粘贴),我得到了期望的结果7。但是如果我运行脚本,函数的输出将被抑制。为什么会这样?Julia与Matlab不同,它不会自动打印值(REPL会自动打印值,因为这就是它的用途:REPL=“read,eval,print loop”)。必须使用
print
或show
显式打印值,例如show(f(3,4))
。在这种情况下,print
和show
执行相同的操作,但通常它们的含义有所不同:
打印([io::io],xs…)
向io(或默认输出流标准输出,如果未提供io)写入规范(未修饰)文本表示。print使用的表示法包含最小格式,并试图避免特定的细节
对
show(x)
将值的信息文本表示形式写入当前输出流。新类型应该重载显示(io::io,x),其中第一个参数是流。show使用的表示通常包括特定的格式和类型信息
请注意,还有一个@show
宏,该宏打印要计算的表达式及其值,如下所示:
julia> @show f(3, 4);
f(3, 4) = 7
如何“运行脚本”?如果要在Julia之外显示输出,我假设您必须显式地
打印一些内容?我通过“/path/to/Julia myScript.jl”从我选择的终端执行脚本,或者通过“include”(/path/to/myScript.jl”)从Julia终端执行脚本。在这两种情况下,结果都是一样的。因此,能够通过添加分号在抑制或显示输出之间进行选择是REPL特有的特性吗?脚本没有等价物吗?它不像Matlab。脚本中不会打印任何内容,除非调用打印函数。在REPL中,每行有一个表达式,并打印其结果。(而something;
的结果是nothing
)是的,分号打印抑制仅在REPL中。或者,你可以带一些东西代码>是某物的简写;nothing
计算结果为nothing
。