isdefined(:x)
将告诉您是否在当前工作空间中定义了变量x。
如果我想检查模块中定义的变量(不是导出的变量),我该怎么做?我尝试了以下所有方法:
julia> module Test
x = 1
end
Test
julia> x
ERROR: UndefVarError: x not defined
julia> isdefined(:x)
false
julia> Test.x
1
julia> isdefined(:Test.x)
ERROR: type Symbol has no field x
julia> isdefined(:Test.:x)
ERROR: TypeError: getfield: expected Symbol, got QuoteNode
julia> isdefined(Test.:x)
ERROR: TypeError: getfield: expected Symbol, got QuoteNode
在上面的模块测试中,我想检查是否定义了x。
答案 0 :(得分:11)
isdefined
有一个可选参数来执行此操作。尝试:
isdefined(Test, :x)
通过常规渠道提供的更多信息:?isdefined
在REPL和书中:http://docs.julialang.org/en/release-0.4/stdlib/base/#Base.isdefined(链接可能适用于旧版本,因此当前占主导地位的搜索引擎会提供帮助)。
答案 1 :(得分:5)
我认为你需要
:x in names(Test)
答案 2 :(得分:0)
在Julia 1.1.0中,isdefined的第一个参数不是可选的,而是有一个@isdefined(x)宏,用于测试是否定义了x。在Test中调用它,检查在Test中是否定义了x(是否继承)。