Спасибо @ Bogumił Kamiński за ваше решение.Проблема в том, что это работает только для печати (хорошо, я знаю, поэтому я попросил LOL).
Представьте, у меня есть три файла.
file1.jl
module myFirstModule
struct MyStruct
attribute :: String
end
end
file2.jl
module mySecondModule
include("file1.jl")
include("file3.jl")
myThirdModule.hello(myFirstModule.MyStruct("a"))
end
file3.jl
module myThirdModule
include("file1.jl")
function hello(arg)
println("argument : ", arg)
println("isa test : ", isa(arg, myFirstModule.MyStruct))
end
end
Ну вот, второймодуль создает экземпляр myStruct и вызывает функцию «hello» из третьего модуля с этим экземпляром в качестве аргумента.
Это вывод консоли:
argument : Main.mySecondModule.myFirstModule.MyStruct("a")
isa test : false
Как вы можете видетьрезультат теста isa равен false .
Это означает, что тип arg не myFirstModule.MyStruct , нокогда я печатаю arg , как вы можете видеть, я получаю это: Main.mySecondModule.myFirstModule.MyStruct("a")
Означает ли это, что myFirstModule.MyStruct ! = Main.mySecondModule.myFirstModule.MyStruct ?