=. (Is (Local)) Noun/Other
Is (Local) =. performs private assignment. A name that is privately assigned is visible only to the explicitly-defined entity that defined the name.
=. used outside of an explicit definition has the same effect as =: .
'fe fi__ fo fum'=. i.4 NB. Outside explicit definition: names are public fe ; fi ; fo ; fum +-+-+-+-+ |0|1|2|3| +-+-+-+-+ foo=: verb define fe=. 90 NB. private, holds true only while foo runs fi__=. 91 NB. locative, overwrites in locale fo=: fe+fi NB. public; =: overwrites the original value of fo fum=. 1&+ NB. holds true only while foo runs (fum is now a verb) fum y NB. Execute fum; its result is the result of foo ) foo 999 1000 NB. Only fi__ and fo have changed (as result of running: foo)... fe ; fi ; fo ; fum +-+--+---+-+ |0|91|181|3| +-+--+---+-+
Note that the load verb, which loads scripts, is explicitly defined, so any privately-assigned names in a script will disappear when the script has finished loading.
WARNING: value here can be other than a noun value. Thus a verb defined in a script using =. instead of =: will disappear once the script has finished loading.
When an explicitly-defined entity starts running, a private namespace is created for it. Assignments to simple names using =. define names in the youngest private namespace. Names in the youngest private namespace hide other variables of the same name.
Only the youngest private namespace is active. Older ones are ignored until all younger have been destroyed. When an explicit definition exits, its private namespace is destroyed along with all its names, and the youngest surviving namespace is activated.
Private assignment is not used for locatives, which are always public in their locale. When there is no private namespace (i. e. when no explicitly-defined entity is running), =. performs public assignment, just like =:.
Used where other languages would employ a local variable.