ジュリアラングは初めてです。私はMatlabのバックグラウンドから来ています。
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
を使用して)ローカルスコープにインポートしたモジュール(パッケージ/ライブラリ)もリストに表示されます(上記のBase、Core、MainなどのModule
sとして)。
さらに、モジュールによってエクスポートされた名前について尋ねることができます。 Base
は、標準ライブラリを含むモジュールです。
Julia> whos(Base)
! Function
!= Function
!== Function
$ Function
% Function
& Function
* Function
+ Function
.... (lots and lots more)
その結果が画面からはみ出してスクロールすることを考えると、結果をフィルター処理する理由を理解できます。そのためには、Regexesを使用できます。 (ジュリアの正規表現の詳細については、 このマニュアルのセクション を参照してください)
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
関数に気づいていなかったので、何か新しいことを学ぶのを手伝ってくれてありがとう。 :)
githubでのJuliaの問題#3393 は、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(Core,r".*field.*")