2016-06-14 11 views
3

isdefined(:x) wird Ihnen sagen, ob eine Variable x in Ihrem aktuellen Arbeitsbereich definiert ist.Wie überprüfen Sie, ob eine Variable in einem Modul in Julia definiert ist?

Wenn ich überprüfen möchte, ob eine Variable in einem Modul definiert ist (nicht eines, das exportiert wird), wie kann ich das tun? Ich habe alles ausprobiert:

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 

In dem Modul Test oben möchte ich überprüfen, ob x definiert ist oder nicht.

Antwort

5

Ich glaube, Sie brauchen

:x in names(Test) 
+7

Oder 'ist definiert (Test,: x)'. Es gibt einen optionalen Parameter zu 'isdefined'. –

+0

@DanGetz Ihr Kommentar ist korrekt, könnten Sie es als Antwort posten? – SalchiPapa

+0

Ich gebe es der @ DanGetz Antwort als etwas kompakter, aber es war auch sehr nützlich, über Namen (Modul) zu wissen. Vielen Dank!! –