为了在Julia中生成一种新的打印类型,应该定义哪些方法?我认为,我们只应该定义show,这将导致其他函数的行为,如:
需要为新类型定义这些方法中的哪一个?
发布于 2013-01-11 21:01:24
如果基本源是任何可靠的引用,那么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, "\"")在这一点上,如果您想要依赖一个公共函数,就应该由您来决定;您只需这样实现所有这些函数。示例:
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()https://stackoverflow.com/questions/14115088
复制相似问题