假设我想从模块内部访问包含范围的类型。具体来说:

文件Englobing.jl

using myModule
type MyType
    a::Float64
    b::Vector{Float64}
end

t = MyType( 1., [ 1., 2. ] )

x = [ .5, .5 ]

myFunc( x, t )


文件myModule.jl

module myModule

export myFunc

    function myFunc( x::Vector{Float64}, z::MyType )
        [ operations ]
    end

end


在这种情况下,我希望能够从模块myModule内部访问类型MyType,而无需使用global

最佳答案

选项1:

您也可以导出类型。例如。如果Englobing.jl是模块,则可能有:

export MyType


然后,在您的myModule.jl文件中,您可以拥有:

using Englobing


选项2

如果Englobing.jl不是模块(当前未将其写为),则可以使用

include("Englobing.jl")


MyModule.jl之内。

但是,这两种情况都取决于Englobing.jl是否使用MyModule.jl中的某些内容(函数,类型,对象等),而同时MyModule.jl使用Englobing.jl中的某些内容。如果期望的结果是要发生这样的情况,我不相信朱莉娅会做到这一点,尽管我也不太清楚为什么这也是理想的。

关于types - Julia :如何从模块内部访问类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39024459/

10-12 01:19