1. Scope Problem
- Posted by codepilot Gmail Account <codepilot at gmail.com> Apr 23, 2005
- 445 views
You define a global type/procedure/function/constant/variable in the main file, then include file(s) that define the same global. Then you include a file that uses it, what namespace can you put for the main file? globa:globular is globa.e, globb:globular is globb.e but nothing for the main file? Dan
<test.exw> global type globular(atom a) =09return a=0 end type include globa.e as globa include globb.e as globb include test2.e </test.exw> <globa.e> global type globular(atom a) =09return a=1 end type </globa.e> <globb.e> global type globular(atom a) =09return a=10 end type </globb.e> <test.e> globular test </test.e>
.\test2.e:1 A namespace qualifier is needed to resolve globular. globular is defined as a global symbol in: test.exw .\globa.e .\globb.e globular test ^
2. Re: Scope Problem
- Posted by don cole <doncole at pacbell.net> Apr 23, 2005
- 435 views
codepilot Gmail Account wrote: > > You define a global type/procedure/function/constant/variable in the > main file, then include file(s) that define the same global. Then you > include a file that uses it, what namespace can you put for the main > file? globa:globular is globa.e, globb:globular is globb.e but nothing > for the main file? > Dan > > }}} <eucode> > <test.exw> > global type globular(atom a) > =09return a=0 > end type > > include globa.e as globa > include globb.e as globb > > include test2.e > </test.exw> > <globa.e> > global type globular(atom a) > =09return a=1 > end type > </globa.e> > <globb.e> > global type globular(atom a) > =09return a=10 > end type > </globb.e> > <test.e> > globular test > </test.e> > </eucode> {{{ > .\test2.e:1 > A namespace qualifier is needed to resolve globular. > globular is defined as a global symbol in: > test.exw > .\globa.e > .\globb.e > > globular test > ^ > > You've got too many globals.
global.e
global integer a
mainProgram.exw include globals.e
global integer a
results in 'a namespace qualifier is need to define a'
Don Cole SF }}}
3. Re: Scope Problem
- Posted by Alexander Toresson <alexander.toresson at gmail.com> Apr 23, 2005
- 421 views
don cole wrote: > > codepilot Gmail Account wrote: > > > > You define a global type/procedure/function/constant/variable in the > > main file, then include file(s) that define the same global. Then you > > include a file that uses it, what namespace can you put for the main > > file? globa:globular is globa.e, globb:globular is globb.e but nothing > > for the main file? > > Dan > > > > }}} <eucode> > > <test.exw> > > global type globular(atom a) > > =09return a=0 > > end type > > > > include globa.e as globa > > include globb.e as globb > > > > include test2.e > > </test.exw> > > <globa.e> > > global type globular(atom a) > > =09return a=1 > > end type > > </globa.e> > > <globb.e> > > global type globular(atom a) > > =09return a=10 > > end type > > </globb.e> > > <test.e> > > globular test > > </test.e> > > </eucode> {{{ > > .\test2.e:1 > > A namespace qualifier is needed to resolve globular. > > globular is defined as a global symbol in: > > test.exw > > .\globa.e > > .\globb.e > > > > globular test > > ^ > > > > > You've got too many globals. > > }}} <eucode> > > ----------------------------------- > global.e > > global integer a > ----------------- > mainProgram.exw > include globals.e > > global integer a > > --results in 'a namespace qualifier is need to define a' > --you can define a global only once in main program and/or includes. > > Don Cole > SF > He knows. He wants a way to put a namespace on an identifier in mainProgram.exw. My opinion in this matter is that you shouldn't have to. A variable in the current file should be prioritized over a variable in an immediately included file, which is prioritized over a variable in a file that is included by the immediately included include files. Regards, Alexander Toresson
4. Re: Scope Problem
- Posted by Pete Lomax <petelomax at blueyonder.co.uk> Apr 23, 2005
- 415 views
On Fri, 22 Apr 2005 12:24:51 -0700, codepilot Gmail Account <codepilot at gmail.com> wrote: > >You define a global type/procedure/function/constant/variable in the >main file, then include file(s) that define the same global. Then you >include a file that uses it, what namespace can you put for the main >file? Bizzare but true:
include main.e as anynameyoulike
in the include file(s). Even though they are themselves included by main.e, it will not cause a problem. You can even do this:
-- this is main.exw. global integer k k=99 include main.exw as main ?main:k
Euphoria spots that a file has already been loaded, and instead of reloading it just adds a namespace tag. Regards, Pete