system.shallow documented

This commit is contained in:
Araq 2012-02-12 18:25:40 +01:00
commit 843ef48808

View file

@ -419,6 +419,18 @@ For ``let`` symbols a copy is not always necessary:
let s = varA # may only copy a pointer if it safe to do so let s = varA # may only copy a pointer if it safe to do so
If you know what you're doing, you can also mark single string (or sequence)
objects as `shallow`:idx:\:
.. code-block:: Nimrod
var s = "abc"
shallow(s) # mark 's' as shallow string
var x = s # now might does not copy the string!
Usage of ``shallow`` is always safe once you know the string won't be modified
anymore, similar to Ruby's `freeze`:idx:.
The compiler optimizes string case statements: A hashing scheme is used for them The compiler optimizes string case statements: A hashing scheme is used for them
if several different string constants are used. So code like this is reasonably if several different string constants are used. So code like this is reasonably
efficient: efficient: