首页 > 解决方案 > 在脚本中定义时,Julia 函数不打印输出

问题描述

我有这个 Julia 脚本:

function f(x,y)
    x+y
end

f(3, 4)

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

标签: julia

解决方案


与 Matlab 不同,Julia 不会自动打印值(REPL 会这样做,因为这就是它的用途:REPL = "read, eval, print loop")。您必须使用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

推荐阅读