获取 Julia 中当前命名空间中的变量列表
Get list of variables in the current namespace in Julia
我有一个与 this one 相似但不同的问题。我在一个模块中有一个函数,我想看看函数命名空间中定义了哪些变量。在另一个 post 中,他们说要使用 varinfo
,但这似乎只适用于 Main 命名空间。例如,如果我 运行 这个
module Test
function hello()
a = 1
varinfo()
return a
end
end
import .Test
Test.hello()
我收到这个错误
WARNING: replacing module Test.
ERROR: UndefVarError: varinfo not defined
有没有办法获取给定命名空间内的变量列表?我正在寻找的是一个函数,该函数在调用时会输出所有可用变量(在我的示例中为 a)以及命名空间中的可用模块。
PS。我想补充一点,varinfo
非常有限,因为它的输出是 Markdown.MD,无法迭代。如果可能的话,我更喜欢在某种列表或字典中输出变量和值的函数。
这是你想要的吗?
module Test
function hello()
a = 1
println(Main.varinfo(@__MODULE__; all=true, imported=true))
return a
end
end
varinfo
仅显示全局变量。
如果你想要局部变量,你需要使用 Base.@locals
宏:
module Test
function hello()
a = 1
println(Base.@locals)
return a
end
end
现在您可以:
julia> Test.hello()
Dict{Symbol, Any}(:a => 1)
1
我有一个与 this one 相似但不同的问题。我在一个模块中有一个函数,我想看看函数命名空间中定义了哪些变量。在另一个 post 中,他们说要使用 varinfo
,但这似乎只适用于 Main 命名空间。例如,如果我 运行 这个
module Test
function hello()
a = 1
varinfo()
return a
end
end
import .Test
Test.hello()
我收到这个错误
WARNING: replacing module Test.
ERROR: UndefVarError: varinfo not defined
有没有办法获取给定命名空间内的变量列表?我正在寻找的是一个函数,该函数在调用时会输出所有可用变量(在我的示例中为 a)以及命名空间中的可用模块。
PS。我想补充一点,varinfo
非常有限,因为它的输出是 Markdown.MD,无法迭代。如果可能的话,我更喜欢在某种列表或字典中输出变量和值的函数。
这是你想要的吗?
module Test
function hello()
a = 1
println(Main.varinfo(@__MODULE__; all=true, imported=true))
return a
end
end
varinfo
仅显示全局变量。
如果你想要局部变量,你需要使用 Base.@locals
宏:
module Test
function hello()
a = 1
println(Base.@locals)
return a
end
end
现在您可以:
julia> Test.hello()
Dict{Symbol, Any}(:a => 1)
1