2016-06-14 10 views
3

isdefined(:x)は、現在の作業領域で変数xが定義されているかどうかを示します。Juliaで変数がモジュール内で定義されているかどうかを確認するにはどうすればよいですか?

変数が(エクスポートされていない)モジュールで定義されていることを確認したいのですが、どうすればいいですか?私は次のすべてを試しました:

julia> module Test 
     x = 1 
     end 
Test 

julia> x 
ERROR: UndefVarError: x not defined 

julia> isdefined(:x) 
false 

julia> Test.x 
1 

julia> isdefined(:Test.x) 
ERROR: type Symbol has no field x 

julia> isdefined(:Test.:x) 
ERROR: TypeError: getfield: expected Symbol, got QuoteNode 

julia> isdefined(Test.:x) 
ERROR: TypeError: getfield: expected Symbol, got QuoteNode 

上記のテストでは、xが定義されているかどうかをチェックしたいと思います。私はあなたが

:x in names(Test) 

答えて

10

isdefinedが必要だと思う

5

は、これを行うためのオプションのパラメータがあります。試してみてください:通常のチャネルを介して利用可能な

isdefined(Test, :x) 

詳細情報:REPL上や本の中で​​:http://docs.julialang.org/en/release-0.4/stdlib/base/#Base.isdefined(リンクは古いバージョンのためのものであってもよいので、現在支配的な検索エンジンが役立ちます)。

+7

または 'isdefined(Test、:x)'です。 'isdefined'にはオプティナルパラメータがあります。 –

+0

@DanGetzあなたのコメントは正しいです、あなたは答えとして投稿できますか? – SalchiPapa

+0

私は@DanGetzの答えにややコンパクトにしておきますが、名前(Module)についても知っておくと非常に便利でした。ありがとう!! –

関連する問題