Pregunta Obtenga una lista de las variables actuales en Julia Lang


Soy nuevo en Julia Lang. Vengo del trasfondo de Matlab.

En Matlab, al presionar whos comando obtendré todas las variables en el alcance actual; y también, puedo almacenarlos en otra variable como x=whos; ¿Existe tal comando en Julia? Código de ejemplo en 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.

34
2018-01-23 07:00


origen


Respuestas:


No estoy seguro de si hay algo mejor, pero

names(Main)[4:end]

parece funcionar. los [4:end] parte es porque incluye :Main, :Core y :Base que creo que no querrías Espero que siempre estén al principio.


8
2018-01-23 09:31



Puedes usar el de Julia whos funciones como ese comando de 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

Cualquier módulo (paquetes / bibliotecas) que importe en su alcance local (usando using) también aparecerá en la lista (como Modules, como Base, Núcleo y Principal arriba).

Además, puede preguntar sobre los nombres exportados por los Módulos. Base es el módulo que contiene la biblioteca estándar.

julia> whos(Base)
!                             Function
!=                            Function
!==                           Function
$                             Function
%                             Function
&                             Function
*                             Function
+                             Function
.... (lots and lots more)

Teniendo en cuenta que ese resultado se desplaza muy lejos de mi pantalla, puede comprender por qué querría filtrar los resultados. Para eso puedes usar Regexes. (Para obtener más información sobre las expresiones regulares de Julia, consulte esta sección del manual)

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

No estaba al tanto de la whos funcionó antes de que lo hicieras, así que gracias por ayudarme a aprender algo nuevo también. :)

Número de Julia # 3393 en github se trata de agregar tamaños de memoria a la whos salida. También hace referencia a hacer whos devuelve un valor en lugar de simplemente imprimir la información.


33
2018-01-24 19:42