Re: about scoping in modules
- To: mathgroup at smc.vnet.net
- Subject: [mg85795] Re: about scoping in modules
- From: David Bailey <dave at Remove_Thisdbailey.co.uk>
- Date: Fri, 22 Feb 2008 07:23:31 -0500 (EST)
- References: <fpkvqk$hrr$1@smc.vnet.net>
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. David Bailey http://www.dbaileyconsultancy.co.uk