使用 display(x)
。
让我在这里评论一下正在进行的事情。一个关键区别在于 show(io, x)
和 show(io, mime, x)
之间,正如您可以在文档中看到的:
help?> show(stdout, a)
show([io::IO = stdout], x)
将值 x 的文本表示写入输出流 io。新类型 T 应该重载 show(io::IO, x::T)。show 使用的表示通常包括 Julia 特定的格式和类型信息,并且应尽可能是可解析的 Julia 代码。
repr 将 show 的输出作为字符串返回。
要为类型 T 的对象自定义人类可读的文本输出,请定义 show(io::IO, ::MIME"text/plain", ::T)。在此类方法中检查 io 的 :compact IOContext 属性是推荐的,因为某些容器通过调用此方法并使用 :compact => true 显示其元素。
所以:
show
不带 MIME 写入对象的文本表示形式,
show
带 MIME 尝试生成人类可读的格式。
现在,print(io, x)
回退到 show(io, x)
,如您在此处所见:
function print(io::IO, x)
lock(io)
try
show(io, x)
finally
unlock(io)
end
return nothing
end
在REPL中,默认情况下,display
会回退到 show(io, mime, a)
:
function display(d::REPLDisplay, mime::MIME"text/plain", x)
io = outstream(d.repl)
get(io, :color, false) && write(io, answer_color(d.repl))
if isdefined(d.repl, :options) && isdefined(d.repl.options, :iocontext)
io = foldl(IOContext, d.repl.options.iocontext,
init=IOContext(io, :limit => true, :module => Main))
end
show(io, mime, x)
println(io)
nothing
end
(在这两种情况下,我已经从基础定义中复制了定义,你最终会使用默认的
print(a)
和
display(a)
操作获取它们 - 跳过在此过程中调用的方法)
您可以在Julia手册
此处找到更多信息。
所以在您的情况下 - 正如Jun Tian建议的那样,您可以使用
display
。 这也只是为了表明所有这些都回归
show
:
julia> a = zeros(4,4);
julia> show(stdout, a)
[0.0 0.0 0.0 0.0; 0.0 0.0 0.0 0.0; 0.0 0.0 0.0 0.0; 0.0 0.0 0.0 0.0]
julia> show(stdout, "text/plain", a)
4×4 Array{Float64,2}:
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
display
? - Jun Tian