Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Re: about scoping in modules
  • Next by Date: Re: about scoping in modules
  • Previous by thread: Re: about scoping in modules
  • Next by thread: Re: about scoping in modules