type MyCompositeType
x::Float64
y::Int
end
z = MyCompositeType(1.0,2)
我希望将Julia中的标准显示和显示方法覆盖为仅显示/显示z.x
,但是覆盖display(x::MyCompositeType)
并不会这样做,我无法做到找到MIME类型的介绍。
答案 0 :(得分:1)
如果您只想让您的类型与某个组件完全相同,请将show
转发给其他类型。
julia> type MyType
obj::Vector{Int}
other::Float64
end
julia> Base.show(io::IO, x::MyType) = show(io, x.obj)
julia> Base.show(io::IO, m::MIME"text/plain", x::MyType) = show(io, m, x.obj)
julia> MyType([1, 2, 3], 1.5)
3-element Array{Int64,1}:
1
2
3
julia> println(MyType([1, 2, 3], 1.5))
[1, 2, 3]
答案 1 :(得分:0)
使用模块的示例:
module m
import Base.show
export MyCompositeType
type MyCompositeType
x::Float64
y::Int
end
function show(io::IO, v::MyCompositeType)
println(io,"The x field is $(v.x)")
end
end
然后你可以做
julia> using m
julia> z = MyCompositeType(1.0,2)
The x field is 1.0
正如@ColinTBowers所指出的,要在REPL中执行此操作,您需要为Base.show
定义一种新方法:
Base.show(io::IO, v::MyCompositeType) = println(io,"The x field is $(v.x)")