为Julia中的新类型定义print()函数

Joh*_*ite 8 printing julia

为了在Julia中创建一个可打印的新类型,应该定义哪些方法?我相信一个人应该只定义show,这将导致其他功能的行为,如:

  • 打印
  • repl_show
  • showcompact
  • 显示所有

需要为新类型定义以下哪些方法?

lga*_*ier 10

如果Base源是任何可靠的引用,base/version.jl只有print()show定义(并show取决于print)

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, "\"")
Run Code Online (Sandbox Code Playgroud)

在这一点上,如果你想依靠一个共同的功能,它取决于你; 你只需要实现所有这些功能.例:

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)
Run Code Online (Sandbox Code Playgroud)

-

julia> f = Foo()
This is a Foo()
Run Code Online (Sandbox Code Playgroud)