type MyCompositeType
x::Float64
y::Int
end
z = MyCompositeType(1.0,2)
私はジュリアで標準のショーや表示方法をご希望のことをしないだけで、表示/表示z.x
が、オーバーライドdisplay(x::MyCompositeType)
に上書きされるように、そして私のタイプのフィールドであることをMIMEタイプの紹介が見つかりません。オーバーライド `show`は
type MyCompositeType
x::Float64
y::Int
end
z = MyCompositeType(1.0,2)
私はジュリアで標準のショーや表示方法をご希望のことをしないだけで、表示/表示z.x
が、オーバーライドdisplay(x::MyCompositeType)
に上書きされるように、そして私のタイプのフィールドであることをMIMEタイプの紹介が見つかりません。オーバーライド `show`は
一部のコンポーネントと同じようにタイプを表示したい場合は、 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]
例:
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
としては、あなたがBase.show
のための新しい方法を定義する必要がREPLでこれを行うために、@ColinTBowersによって指摘行うことができます:
Base.show(io::IO, v::MyCompositeType) = println(io,"The x field is $(v.x)")
私は何かが不足している可能性があります、私はモジュールがなぜ必要なのか分かりません。 'Base.show ... 'でメソッド定義を呼び出すだけなら、REPLでも同じ効果が得られます。質問に対する私のコメントを参照してください。それはv0.5で私のために働いています... –
@ColinTBowersあなたが正しいです - 私が最初に試したとき、私は 'show()'への 'Base.'プリフィックスを見逃して、それなしで動作しません。私は私の答えを編集します。 – MBaz
probsはありません。私のコメントを答えのテンプレートとして自由に使用してください。私は質問を正しく理解していると100%確信していないので、私自身は答えをしなかった。 –
'Base.show(io :: IO、a :: MyCompositeType)= print(io、string(a.x))は何をしますか?もっと読む[ここ](http://stackoverflow.com/questions/40066212/julia-does-not-appear-to-be-using-string-to-perform-interpolation)... –