Позвольте мне здесь прокомментировать, что здесь происходит. Ключевое различие между 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, обычно включает в себя c форматирование и информацию о типе, специфичном для Julia, и по возможности должно быть анализируемым кодом Julia.
repr возвращает вывод show в виде строки.
To настроить вывод текста в удобочитаемом виде для объектов типа T, вместо этого определите show (io :: IO, :: MIME "text / plain", :: T). В таких методах рекомендуется проверять свойство: compact IOContext io, поскольку некоторые контейнеры показывают свои элементы, вызывая этот метод с: 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
и display
по умолчанию в REPL возвращается к 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)
# this can override the :limit property set initially
io = foldl(IOContext, d.repl.options.iocontext,
init=IOContext(io, :limit => true, :module => Main))
end
show(io, mime, x)
println(io)
nothing
end
(в обоих случаях я скопировал определения из Base, который вы в конечном итоге получите с использованием операций по умолчанию print(a)
и display(a)
- пропуская методы, которые вызываются в процессе)
Вы можете найти дополнительную информацию об этом здесь в Руководство Julia.
Итак, в вашем случае - как предложил Джун Тиан, вы можете использовать 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