Re: about scoping in modules
- To: mathgroup at smc.vnet.net
- Subject: [mg85813] Re: about scoping in modules
- From: Oliver Ruebenkoenig <ruebenko at uni-freiburg.de>
- Date: Sat, 23 Feb 2008 04:25:02 -0500 (EST)
- References: <fpkvqk$hrr$1@smc.vnet.net> <fpmeur$8em$1@smc.vnet.net>
On Fri, 22 Feb 2008, David Bailey wrote: > P_ter wrote: >> Hello, >> in the next two modules I would like that the inner module uses a variable from the outer module. >> mfb[oneObj_] := Module[{ttmp = oneObj},AppendTo[ global2mfb, ttmp]] >> mfa[e_] := Module[{global2mfb = e, t = 3},mfb[t] ] >> mfa[{2,3}] gives a message that global2mfb is not a variable with a value, so it can not be changed. >> It means I do not understand the concept of module in Mathematica. My questions are: >> 1. why does it go wrong? >> 2. how can I realize what I want? >> with friendly greetings, >> P_ter >> > Well, despite its name, global2mfb is local to the Module in which it > appears - so using it elsewhere refers to a global variable of the same > name with no value - hence the diagnostic. This is the purpose of Module > - to stop one use of a variable clashing with another. > > Take the assignment global2mfb=e outside the list of local > initialisations, and I think you will get what you want. > almost, AppendTo needs a reference not an explicit List such as x={1,2} AppendTo[x,1] AppendTo[{1,2},3] can not work since: Attributes[ AppendTo] you could not access the result. Oliver Oliver Ruebenkoenig, <ruebenko AT uni-freiburg.de>