8

Juliaで新しいタイプを印刷可能にするには、どのメソッドを定義する必要がありますか? を定義するだけでよいと思いますshow。これにより、次のような他の関数の動作が誘導されます。

  • 印刷する
  • ストリング
  • repl_show
  • showcompact
  • すべて表示する

次のメソッドのうち、新しい型に対して定義する必要があるのはどれですか?

4

1 に答える 1

10

ベース ソースが信頼できる参照である場合、とbase/version.jlのみが定義されている (およびに依存している)print()showshowprint

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()
于 2013-01-11T21:01:24.060 に答える