Julia 显示自定义类型构造时自动运行的方法

Julia 显示自定义类型构造时自动运行的方法,julia,Julia,每次调用自定义类型的构造函数时,该类型的show方法都会运行。我不明白为什么。可重复的示例如下: 我有一个模块: module ctbTestModule1 import Base.show export MyType1 type MyType1 function MyType1() new() end end function show(io::IO, a::MyType1) println("hello world") end end

每次调用自定义类型的构造函数时,该类型的
show
方法都会运行。我不明白为什么。可重复的示例如下:

我有一个模块:

module ctbTestModule1

import  Base.show

export  MyType1

type MyType1
    function MyType1()
        new()
    end
end

function show(io::IO, a::MyType1)
    println("hello world")
end

end
我在REPL中打开一个新的julia会话并键入:

using ctbTestModule1
z = MyType1()
当我运行行
z=MyType1()
时,以下内容会打印到控制台:

这里如何调用
show
方法?它显然不会在内部构造函数中调用…

REPL(Read evaluate print循环)计算并打印每条语句

你所描述的是通常的行为

在REPL中运行
z=1
,打印输出将为
1

同样,您的
z
是一个
MyType1
,显示为
hello world

如果要抑制REPL中的输出,请使用分号
完成语句

z = MyType1();

因此,为了回答您的问题:是的,如果您在REPL中创建了一个类型的实例,则通过调用该类型的show()函数来显示结果。

是的,您完全正确。我不知道我脑子里在想什么。不知何故,我混淆了REPL中的语句和函数内部的语句。谢谢你温柔地让我失望:-)
z = MyType1();