2013-01-01 8 views
8

Juliaで新しいタイプを印刷できるようにするには、どのメソッドを定義する必要がありますか?Juliaで新しいタイプのprint()のような関数を定義する

  • 印刷
  • 文字列
  • repl_show
  • showcompact
  • SHOWALL

:私は1つだけで、その後のような他の機能の動作を引き起こすであろう、showを定義すべきであると信じていますこれらのメソッドのうち、新しい型に対して定義する必要がありますか?

答えて

10

ベースのソースは、任意の信頼性の参照である場合は、base/version.jlだけprint()show定義されてい(とshowprintによって異なります)

function print(io::IO, v::VersionNumber) 
    print(io, v.major) 
    print(io, '.') 
    print(io, v.minor) 
    print(io, '.') 
    print(io, v.patch) 
    if !isempty(v.prerelease) 
     print(io, '-') 
     print_joined(io, v.prerelease,'.') 
    end 
    if !isempty(v.build) 
     print(io, '+') 
     print_joined(io, v.build,'.') 
    end 
end 
show(io, v::VersionNumber) = print(io, "v\"", v, "\"") 

あなたが頼りにしたい場合は、この時点で、それはあなた次第です思えます1つの共通機能。 このようにすべての機能を実装するだけです。例:

type Foo 
end 
import Base.string 
function string(x::Foo) 
    return "a Foo()" 
end 
import Base.print 
print(io::IO, x::Foo) = print(io, string(x)) 
import Base.show 
show(io::IO, x::Foo) = print(io, "This is ", x) 

-

julia> f = Foo() 
This is a Foo() 
関連する問題