如何列出Julia的所有内部变量?

时间:2016-05-24 23:20:50

标签: julia read-eval-print-loop

Julia有许多内部变量,例如WORD_SIZE(表示目标系统是32位还是64位)和CPU_CORES(目前可用的cpu核心数)。

在Julia REPL中,有没有办法列出所有这些内部变量?

AFAIK,whosnames(Main)没有显示它们......

编辑:从previous question on listing exported function names开始,我看到names(Base)确实显示了这些内部变量,以及Base模块中的所有其他导出项。

1 个答案:

答案 0 :(得分:1)

正如@DNF在上面的评论中指出的那样,whos(Base.Sys)不会在Base中打印所有内部(常量)变量。但我们可以通过以下方式直接从whos(Base)搜索这些变量:

julia> whos(Base, r"^\s*[A-Z_]+$")
                          ARGS      0 bytes  0-element Array{UTF8String,1}
                          BLAS    214 KB     Module
                     CPU_CORES      8 bytes  Int64
                        C_NULL      8 bytes  Ptr{Void}
                    ENDIAN_BOM      4 bytes  UInt32
                           ENV      0 bytes  Base.EnvHash with 29 entries
                          FFTW    149 KB     Module
                          HTML    168 bytes  DataType
                             I      8 bytes  UniformScaling{Int64}
                            IO     92 bytes  DataType
                    JULIA_HOME     66 bytes  ASCIIString
                        LAPACK    933 KB     Module
                     LOAD_PATH    190 bytes  2-element Array{ByteString,1}
                          MIME    148 bytes  DataType
                       OS_NAME      0 bytes  Symbol
                        STDERR    217 bytes  Base.TTY
                         STDIN     64 KB     Base.TTY
                        STDOUT    217 bytes  Base.TTY
                       VERSION     40 bytes  VersionNumber
                     WORD_SIZE      8 bytes  Int64
这是因为朱莉娅的常数是大概的。您可能会发现某些模块也在列表中,但它很容易识别。实际上,人们可以使用更复杂的正则表达式驱逐它们。

请注意,那些未导出到Base的变量将不会显示出来。 e.g。

whos(Base.Libdl)