switch(string)

David Ferenczi raggae at ferenczi.net
Wed Jun 18 02:28:13 PDT 2008


Robert Fraser wrote:

> David Ferenczi wrote:
>> The following code gives the following compilation error:
>> 
>> Error: case must be a string or an integral constant, not BAR1
>> Error: case must be a string or an integral constant, not BAR2
>> 
>> --------------------------8<------------------------------------
>> int main(string[] args)
>> {
>>     string BAR1 = "bar1";
>>     string BAR2 = "bar2";
>>     string myString = "bar3";
>> 
>>     switch (myString)
>>     {
>>         case BAR1:
>>             break;
>> 
>>         case BAR2:
>>             break;
>> 
>>         defualt:
>>             break;
>>     }
>> 
>>     return 0;
>> }
>> --------------------------8<------------------------------------
>> 
>> Can somebody explain me why?
>> 
>> Thanks,
>> David
> 
> BAR1 and BAR2 are not constant. In D1, try:
>      const BAR1 = "bar1";
> In D2, you can also try:
>      invariant BAR1 = "bar1";
>      enum BAR1 = "bar1";
> The enum version and the const version in D1 will not take up any storage.

Thank you very much for the quick reply. Does it mean that a
constant/invariant doesn't need an explicit storage type?

I thought that string was invariant, so it was constant. Isn't it right?

Thanks,
David



More information about the Digitalmars-d-learn mailing list