如何定义类型在Julia REPL上的显示方式

如何定义类型在Julia REPL上的显示方式,julia,read-eval-print-loop,Julia,Read Eval Print Loop,我不清楚应该如何定义juliarepl上类型的外观。有许多类似的函数,包括:display、show、print、writemime等。您需要为类型重载Base.show() julia> import Base: show julia> type Foo x y z end julia> Base.show(io::IO, f::Foo) = println(io, "Foo: x=$(f.x

我不清楚应该如何定义juliarepl上类型的外观。有许多类似的函数,包括:display、show、print、writemime等。

您需要为类型重载Base.show()

julia> import Base: show

julia> type Foo
           x
           y
           z
       end

julia> Base.show(io::IO, f::Foo) = println(io, "Foo: x=$(f.x), y=$(f.y), z=$(f.z)")
show (generic function with 98 methods)

julia> Foo("Hello ", "World", "!")
Foo: x=Hello, y=World, z=!

请注意,如果您以这种方式重载该方法:
Base.show
,那么您甚至不需要执行
import Base:show
。您几乎总是希望为类型中的所有字段指定具体类型:
julia>type Foo x::Int64;y::64;z::UTF8String end
完成此操作后,我的类型将正确显示为dict中的值(我不想发布代码,因为它依赖于通过SLURM托管在远程机器上的SharedArray)。如果我直接叫“julia>x”就不行了。