TDPL dictionary example - error

Mariusz Gliwiński alienballance at gmail.com
Thu Dec 23 23:01:08 PST 2010


Friday 24 December 2010 @ 06:24:34 Caligo:
> Greetings,
> 
> I just joined here, so sorry if this has been posted before.
> 
> I'm reading TDPL and the example on page 8 doesn't compile.  I'm using the
> latest GDC with GCC 4.4.5.  I've checked the errata, but nothing for this
> error.
> 
> import std.stdio;
> import std.string;
> 
> void main(){
> 
>      size_t[char[]] dictionary;
>     foreach(line; stdin.byLine()){
>               foreach(word; splitter(strip(line))){
>                           if(word in dictionary) continue;
>                     auto newID = dictionary.length;
>                           dictionary[word] = newID;
>                     writeln(newID, '\t', word);
>             }
>     }
>     //writeln(dictionary.length);
> }
> 
> 
> This is the error:
> dictionary.d:12: Error: associative arrays can only be assigned values with
> immutable keys, not char[]
> 
> If i use immutable keys, it works, but it defeats the purpose.  So what's
> wrong with the code?

It works for DMD, I think it's a GDC bug (i'm new in D too, so i might be 
wrong). Keep in mind that GDC implements only D 1.0 and book has D 2.0 code.

Sincerely,
Mariusz Gliwiński
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20101224/6697f4d9/attachment.pgp>


More information about the Digitalmars-d-learn mailing list