在脚本中定义时,Julia 函数不会打印输出

Luk*_*Fun 5 julia

我有这个朱莉娅脚本:

function f(x,y)
    x+y
end

f(3, 4)
Run Code Online (Sandbox Code Playgroud)

当我在实时终端中运行它(通过复制/粘贴)时,我得到了所需的结果 7。但是如果我运行脚本,函数的输出将被抑制。这是为什么?

Ste*_*ski 4

与 Matlab 不同,Julia 不会自动打印值(REPL 会自动打印值,因为这就是它的用途:REPL =“读取、评估、打印循环”)。您必须使用printor显式打印该值show,例如show(f(3, 4))。在这种情况下,printshow做同样的事情,但一般来说它们有一些不同的含义:

print([io::IO], xs...)

向 io(如果未给出 io,则写入默认输出流 stdout)写入规范(未修饰的)文本表示形式。print 使用的表示形式包括最少的格式并尝试避免 Julia 特定的细节。

相对

show(x)

将值的信息文本表示形式写入当前输出流。新类型应该重载 show(io::IO, x),其中第一个参数是流。show 使用的表示形式通常包括 Julia 特定的格式和类型信息。

请注意,还有一个@show宏,它打印所计算的表达式及其值,如下所示:

julia> @show f(3, 4);
f(3, 4) = 7
Run Code Online (Sandbox Code Playgroud)

  • 这和 Matlab 中的不一样。除非调用打印函数,否则脚本中不会打印任何内容。在 REPL 中,每行有一个表达式,并打印其结果。(“something;”的结果是“nothing”。) (2认同)