On Tue, Jul 19, 2016 at 11:54 PM, Isaiah Norton <[email protected]> wrote:
> Creating variables dynamically at local scope is not possible (if you are
> calling `eval` inside a function: it does not work like that!)
>
>> Since the runtime can determine that the local variable is undefined as
>> evidenced by an appropriate error
>
>
> All compile-time undefined bindings become a runtime lookup from the
> enclosing (i.e. module) scope. The undefined error means that this lookup
> failed.

We do have local only variables that can be undefined.

>
>
> On Tue, Jul 19, 2016 at 10:43 PM, Christopher Rinderspacher
> <[email protected]> wrote:
>>
>> I, too, would like to be able to check whether local variables are
>> defined. In my case, I am parsing a file that doesn't allow redefinition of
>> a field. The natural way to do this is to check whether I've previously
>> assigned a variable with the content.
>>
>> The fact that isdefined only looks at the module scope is really
>> irrelevant to my use case. Since the runtime can determine that the local
>> variable is undefined as evidenced by an appropriate error, I wish I could
>> do the same within my function without some clunky try ... catch mehcanism.

A separate bool flag or a Nullable should work equally well.

>>
>>
>> On Monday, May 11, 2015 at 7:31:06 PM UTC-4, Juha Heiskala wrote:
>>>
>>>  Hello,
>>>
>>> Am I missing something or doesn't isdefined detect local variables of a
>>> function?
>>>
>>>
>>> julia> foo()= begin bar=1; isdefined(current_module(), :bar); end
>>> foo (generic function with 1 method)
>>>
>>> julia> foo()
>>> false
>>>
>>> Best Regards,
>>>
>>> Juha
>>>
>>> julia version 0.3.5
>>>
>>> julia> versioninfo()
>>> Julia Version 0.3.5
>>> Commit a05f87b* (2015-01-08 22:33 UTC)
>>> Platform Info:
>>>   System: Linux (x86_64-linux-gnu)
>>>   CPU: Intel(R) Core(TM) i7-3667U CPU @ 2.00GHz
>>>   WORD_SIZE: 64
>>>   BLAS: libopenblas (NO_LAPACK NO_LAPACKE DYNAMIC_ARCH NO_AFFINITY)
>>>   LAPACK: liblapack.so.3
>>>   LIBM: libopenlibm
>>>   LLVM: libLLVM-3.3
>
>

Reply via email to