我是Julia Lang的新手。我来自Matlab的背景。
在Matlab中,当按whos
命令时,我将获得当前范围内的所有变量;而且,我可以将它们存储在另一个变量中,例如x=whos;
Julia中是否存在这样的命令?
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.
答案 0 :(得分:36)
您可以像使用Matlab命令一样使用Julia的whos
函数。
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正则表达式的更多信息,请参阅this manual section)
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 issue #3393是关于向whos
输出添加内存大小。它还引用了使whos
返回一个值,而不仅仅是打印出来的信息。
答案 1 :(得分:12)
不确定是否有更好的东西,但
names(Main)[4:end]
似乎有效。 [4:end]
部分是因为它包含我认为您不想要的:Main
,:Core
和:Base
。我希望他们永远都在开始。
答案 2 :(得分:1)
whos()
在Julia的较新版本(1.0及更高版本)中不可用。请改用varinfo()
。例如,varinfo(Core,r".*field.*")
答案 3 :(得分:0)