Perhaps this is something I've simply overlooked in the documentation, but how can you view a list of currently defined variables in Julia? For example, in R you can use ls()
which will give you a list of user-defined objects in the current scope. Is there an equivalent in Julia?
This is very similar to this question, but it seems that the whos
function (as well as names
) will list modules and other things which are not user-defined. How do I simply list variables which have been defined by the user and are not exported from other modules?
One possible approach is to make a variant of whos
that restricts on the summary of the objects in the current module:
function whos_user(m::Module=current_module())
for v in sort(names(m))
s = string(v)
if isdefined(m, v) && summary(eval(m, v)) != "Module" && s != "whos_user"
println(s)
end
end
end
Then if we do
x = 1
y = "Julia"
f(n) = n + 1
whos_user()
we get
f
x
y
One could also write whos_user
to return an array of symbols rather than printing:
function whos_user(m::Module=current_module())
v = sort(names(m))
filter(i -> isdefined(m, i) && summary(eval(m, i)) != "Module" && string(i) != "whos_user", v)
end
Then running the same test code as before, we get this:
3-element Array{Symbol,1}:
:f
:x
:y
If there's no better way to do this then I'll accept this answer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With