如果您没有安装包using Foo
,那么Julia对语句Foo
的确做什么?据我所知朱莉娅开始搜索JULIA_LOAD_PATH
,但是怎么样?
在JULIA_LOAD_PATH
的根级别,必须有一个名为Foo.jl
的目录,其中Foo
部分可能不区分大小写且.jl
后缀是可选的?
在此Foo.jl
目录中,必须有一个Foo.jl
的源文件名module Foo
?
答案 0 :(得分:4)
using
隐式调用require
,间接调用find_in_path
:
function find_in_path(name::AbstractString, wd = pwd())
isabspath(name) && return name
base = name
# this is why `.jl` suffix is optional
if endswith(name,".jl")
base = name[1:end-3]
else
name = string(base,".jl")
end
if wd !== nothing
isfile(joinpath(wd,name)) && return joinpath(wd,name)
end
for prefix in [Pkg.dir(); LOAD_PATH]
path = joinpath(prefix, name)
isfile(path) && return abspath(path)
path = joinpath(prefix, base, "src", name)
isfile(path) && return abspath(path)
path = joinpath(prefix, name, "src", name)
isfile(path) && return abspath(path)
end
return nothing
end
上面的源代码显示name
上没有其他操作,这意味着Foo
部分应该是敏感(目前依赖于文件系统,请参阅下面的评论)。并且目录名称不必与您的文件名兼容,只要目录在LOAD_PATH
中,它就可以是任何内容。