Dear Victor,
While it is easy to provide a slim implementation, which works nicely for particular cases, it is much more complicated to provide a general solution that works for all potential use cases.
Here are a few questions one has to address here: * Most likely, one would expect something like a write-once semantic via the property (declare the property, assign later some value to it, etc.) rather than a true "const" (at least when "property" rather than "variable" is used). * Since Tcl variables can be altered in many ways (output variables of cmds, resolver, ...) a true "const" must be most likely realized via traces (which have often tricky issues). * it is not clear, whether "const" should imply different write semantics, or as well different unset semantics. In the latter case, when a destroy happens, one should certainly unset the variables even when they are "const". Also, copy/move operations tend to be tricky. * when const is a slot property, we should address as well cases for slots with additional semantics (such as persistent, database-mapped slots, etc.)
Actually, my goal would even go further, by setting optionally objects/classes immutable, but this is opening some more cans of worms, but this opens as well some more potential optimizations.
With have the "immutable" theme block on our todo list, but not for the initial release.
-gustaf neumann
On 03.01.12 20:47, Victor Mayevski wrote:
Thank you Gustaf and Sefan,
Would it be possible to add that functionality into NX core? For example, via:
Obj property {key:constant value} Obj variable key:constant value
I know I can code it myself but I think programmers would prefer for it to be a built-in function.