That explains it, thanks.
In my actual problem, what I wanted to do in the included file was
something like this:
```
sall,sloops,slost,Nbins,psibins,initialhist,finalhist,vols =
jldopen("$datafile.jld") do f
read(f, "sall"),
read(f, "sloops"),
read(f, "sloss"),
read(f, "Nbins"),
read(f, "psibins"),
read(f, "initialhist"),
read(f, "finalhist"),
read(f, "vols")
end
```
where `datafile` is the variable defined in the function. In other words,
including the file would define and assign to all those variables. Is it
maybe possible to write a macro that does this?
// T
On Thursday, June 26, 2014 8:17:29 PM UTC+2, Simon Kornblith wrote:
>
> include evaluates at top-level, so this would only work if foo were a
> global variable. It not possible to include in a function context for the
> same reason it is not possible to eval in a function context.
>
> Simon
>
> On Thursday, June 26, 2014 1:03:00 PM UTC-4, Tomas Lycken wrote:
>>
>> I have the following two files:
>>
>> *includetest1.jl*:
>>
>> module IncludeTest
>>
>> function testinclude()
>> foo = "foo"
>> println(foo)
>> include("includetest2.jl")
>> end
>>
>> end
>>
>> *includetest2.jl*
>>
>> println(foo)
>>
>> If I now try to execute this the function from the REPL, I get errors
>> stating that foo is not defined:
>>
>> julia> include("includetest1.jl")
>>
>> julia> IncludeTest.testinclude()
>> foo
>> ERROR: foo not defined
>> in include at boot.jl:244
>> while loading [...]/includetest2.jl, in expression starting on line 1
>>
>> I thought include was supposed to just insert the contents of the file
>> in whatever context you’re in? If include is not the way to do this, is
>> there another?
>>
>> For completeness:
>>
>>
>> julia> versioninfo()
>> Julia Version 0.3.0-prerelease+3884
>> Commit 3e6a6c7* (2014-06-25 10:41 UTC)
>> Platform Info:
>> System: Linux (x86_64-linux-gnu)
>> CPU: Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz
>> WORD_SIZE: 64
>> BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY)
>> LAPACK: libopenblas
>> LIBM: libopenlibm
>>
>> // T
>>
>>
>