Ответ 1
Не уверен, что есть что-то лучше, но
names(Main)[4:end]
похоже, работает. Часть [4:end]
состоит в том, что она включает в себя :Main
, :Core
и :Base
, которые, я думаю, вам не нужны. Надеюсь, они всегда будут в начале.
Я новичок в Джулии Ланг. Я прихожу на фоне Матлаба.
В Matlab при нажатии команды whos
я получу все переменные в текущей области; а также, я могу сохранить их в другой переменной, например x=whos;
. Существуют ли такие команды в Джулии?
Пример кода в Matlab:
>> a=3;
>> b=4;
>> whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
a 1x1 8 double
b 1x1 8 double
prefix 1x16 16 char
Total is 18 elements using 32 bytes.
Не уверен, что есть что-то лучше, но
names(Main)[4:end]
похоже, работает. Часть [4:end]
состоит в том, что она включает в себя :Main
, :Core
и :Base
, которые, я думаю, вам не нужны. Надеюсь, они всегда будут в начале.
Вы можете использовать функции Julia whos
точно так же, как и команда Matlab.
julia> whos()
Base Module
Core Module
Main Module
ans Nothing
julia> x = 5
5
julia> whos()
Base Module
Core Module
Main Module
ans Int64
x Int64
Любые модули (пакеты/библиотеки), которые вы импортируете в свою локальную область (с помощью using
), также будут отображаться в списке (как Module
s, например Base, Core и Main выше).
Кроме того, вы можете задать имена, экспортируемые модулями. Base
- это модуль, содержащий стандартную библиотеку.
julia> whos(Base)
! Function
!= Function
!== Function
$ Function
% Function
& Function
* Function
+ Function
.... (lots and lots more)
Учитывая, что этот результат прокручивается с моего экрана, вы можете понять, почему вы хотите отфильтровать результаты. Для этого вы можете использовать регулярные выражения. (Для получения дополнительной информации о регулярных выражениях Julia см. этот раздел руководства)
julia> whos(r"M")
Main Module
julia> whos(Base, r"Match"i)
DimensionMismatch DataType
RegexMatch DataType
each_match Function
eachmatch Function
ismatch Function
match Function
matchall Function
Я не знал о функции whos
, прежде чем вы спросили, поэтому спасибо, что помогли мне узнать что-то новое.:)
Проблема Julia № 3393 о github заключается в добавлении размеров памяти к выходу whos
. Он также ссылается на то, что whos
возвращает значение, а не просто распечатывает информацию.
Обновление:
whos()
... не работает ни в iJulia, ни в командной строке в Julia-1.0.0.
Это работает в Julia-0.6.4, хотя.
С другой стороны,
varinfo()
.... печатает информацию об экспортированных глобальных переменных в модуле. Например,
julia-1.0> varinfo()
name size summary
–––––––––––––––– ––––––––––– –––––––––––––––––––––––––––––––
Base Module
Core Module
InteractiveUtils 154.271 KiB Module
Main Module
PyPlot 781.872 KiB Module
ans 50.323 KiB Plots.Plot{Plots.PyPlotBackend}
myrepl 0 bytes typeof(myrepl)
x 88 bytes 1×6 Array{Int64,2}
y 0 bytes typeof(y)
Надеюсь, это окажется полезным.
whos()
недоступен в новых версиях Julia (начиная с версии 1.0). varinfo()
этого используйте varinfo()
. Например, varinfo(Core,r".*field.*")
Начиная с версии 1.1 есть также макрос @locals
Экспериментальный макрос Base. @Locals возвращает словарь текущих имен и значений локальных переменных