为了在 Julia 中使一种新类型可打印,应该定义哪些方法?我相信一个人应该只定义show
,这将引发其他函数的行为,例如:
- 打印
- 细绳
- repl_show
- 展示紧凑型
- 显示所有
哪些方法需要为新类型定义?
如果 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, "\"")
在这一点上,如果您想依赖一个常用功能,这似乎取决于您。您只需以这种方式实现所有此类功能。例子:
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()