LocalizeVariables doesn't!
- To: mathgroup at smc.vnet.net
- Subject: [mg123940] LocalizeVariables doesn't!
- From: Frank Iannarilli <frankeye at cox.net>
- Date: Sun, 1 Jan 2012 02:27:01 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Reply-to: comp.soft-sys.math.mathematica at googlegroups.com
My reading of Docs on the LocalizeVariables->True option of Manipulate[] is that all variables associated with Controls will be localized (inside a DynamicModule). To prevent "local" Manipulate variable name leaks into the Global namespace, I declare them as "dummy" controls, using: ControlType->None. But this evidently doesn't work as I'd expect: Try the following execution sequence: ?Global`* (* should NOT list myPicture as a variable *) symbolLeaker[]:= Manipulate[.... (* definition cell later below *) symbolLeaker[] (* Invoke it *) ?Global`* (* myPicture now shows up in the Global` namespace !??! *) What gives? Thanks, Frank ---------------------- symbolLeaker[] := Manipulate[ myPicture = Table[Sin[i*j/cdivisor], {i, 1, 32}, {j, 1, 32}]; ListPlot3D[myPicture, PlotLabel -> "Image", PlotRange -> All], (* >>>>>>> CONTROL/LAYOUT SECTION <<<<<<<<< *) Item[Style["Symbol Leaker", 16, Bold, Brown], Alignment -> Center], Delimiter, {{cdivisor, 64, "Sine Inverse Freq."}, Range[4, 128]}, (* Dummy control variables, which are actually variables we'd like to keep localized to within \ this Manipulate, or otherwise they'd leak out as session- global variables. A good rule of thumb: if a variable is included in TrackSymbols, it better be localized. LocalizeVariables-> True localizes variables associated with Controls. *) {myPicture, ControlType -> None}, (* Manipulate options *) LocalizeVariables -> True, TrackedSymbols :> {cdivisor}, ContinuousAction -> False ]