immutable string
    Jonathan M Davis 
    jmdavisProg at gmx.com
       
    Sat Apr 27 18:11:33 PDT 2013
    
    
  
On Saturday, April 27, 2013 20:14:10 Michael wrote:
> According to http://dlang.org/const3.html
> 
> >The simplest immutable declarations use it as a storage class.
> >It can be used to declare manifest constants.
> 
> So, immutable string s = "..."; should be a manifest constant.
> 
> If it is a constant that it can be used in switch(...).
> 
> switch(someStr)
> {
>     case s: ...; // Error: case must be a string or an integral
> constant, not s.
> },
> 
> but string s = "..."; works good.
> 
> Why?
Because an immutable string _isn't_ a manifest constant. Only enums are 
manifest constants.
immutable s = "foo";
or
immutable string s = "foo";
specifically create an immutable variable. It has an address and doesn't result 
in "foo" being copy-pasted everywhere that s is used like it would if s were 
an enum. It's no different from
string s = "foo";
or
auto s = "foo";
except that when is is immutable, it's implicitly shared, and you can't mutate 
it.
- Jonathna m Davis
    
    
More information about the Digitalmars-d-learn
mailing list