在 C#
和 Java
中,我们有 toString()
方法来返回一个 String
表示对象。
我在 Julia 中看到的最接近的是 show()
,但我不完全确定它是否是正确的函数。
struct Person
name::String
age::Int32
end
amber = Person("Amber",22)
println(amber) # Output: Person("Amber", 22)
如果我想对返回的 String
有更多的控制,我可以这样做:
function Base.show(io::IO, person::Person)
return "Name: $(person.name) Age: $(person.age)"
end
println(show(amber)) # Output: Name: Amber Age: 22
我每次都必须直接调用 show()
吗?我可以将它传递给 println()
并让它调用 show()
吗?在 C#
和 Java
中,如果 toString()
被覆盖,Console.writeLine()
或 System .out.println()
会调用toString()
,不需要直接调用。
最佳答案
这在 Julia 中是一样的:
julia> struct Person
name::String
age::Int32
end
julia>
julia> amber = Person("Amber",22)
Person("Amber", 22)
julia> Base.show(io::IO, person::Person) = println("Name: $(person.name) Age: $(person.age)")
julia> amber
Name: Amber Age: 22
这个问题接近于重复:
关于julia - show() 是返回结构的 String 表示的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72562505/