在脚本中定义时,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