Re: How to manipulate globals in a function?
- To: mathgroup at smc.vnet.net
- Subject: [mg73703] Re: How to manipulate globals in a function?
- From: David Bailey <dave at Remove_Thisdbailey.co.uk>
- Date: Sun, 25 Feb 2007 04:33:07 -0500 (EST)
- References: <erop34$94v$1@smc.vnet.net>
davisjf at gmail.com wrote: > I am trying to write code to manipulate a global array in a function. > How do something like this: > > Moo [A_List, i_Integer] := > > A[[i]] = 7; > > Moo[A, 1] > > This fails. But, if I do this without a funciton it works. > > i=1 > A[[i]] = 7 > > JD > > Hello, As written, you end up executing something like: {1,1,1,1}[[1]]=7 because the argument A gets evaluated - so one way is to prevent that evaluation: SetAttributes[Moo, HoldFirst]; Moo[A_, i_Integer] := (A[[i]] = 7); Note that the first argument to Moo now matches a symbol, not a list, because it is no longer evaluated. David Bailey http://www.dbaileyconsultancy.co.uk