MathGroup Archive 2008

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

Search the Archive

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>


  • Prev by Date: Module and Manipulate Oddity
  • Next by Date: Re: Some interaction in Mathematica 6.0
  • Previous by thread: Re: about scoping in modules
  • Next by thread: Re: about scoping in modules