[REBOL] Re: Replacing placeholders?
From: tim-johnsons:web at: 9-Aug-2007 12:07
On Wednesday 08 August 2007, Kai Peters wrote:
> Tim ~
>
> my "overshadowing" assumption was wrongly based on output below
>
Rebol's approach to scope can be problematic, especially in large
applications.
Example:
;; global value (not inside of a function)
username: "Kai" ;; used for all kinds of things in large application
scopekiller: func[uname[string!] /local user][
username: uname ;; OOPS! typo with unpredicable consequences
]
scopekiller "Tim"
;; username is now me :-)
This is where 'protect can be your friend.
username: "Kai"
protect 'username
and:
;;use 'unprotect before resetting a 'protect'ed global word.
unprotect 'username
username: "Tim"
;;;;;;;;;;;;;;
I also use global words as part of an object, this has a tendency
to lessen typos.
glbs: context[unsername: "Kai"]
glbs/username: "Tim"
tim