BLM:
        const(char)[][] words = set.keys.sort;

Converting the function's return type to const and doing this did what I wanted elegantly, I didn't realise I could apply sort to a const like this.

Trying to use .dup like this:

        char[][] words = set.keys.dup;

gives this error message:

Error: cannot implicitly convert expression (_adSort(_adDupT(& D13TypeInfo_AAxa6__initZ,set.keys()),& D11TypeInfo_Aa6__initZ)) of type const(char)[][] to char[][]

Isn't there any sort of cast(nonconst) equivalent?

char[][] words;
words.length = set.keys.length;
foreach(size_t i, const char[] text; set.keys) {
words[i] = text.dup;
}

This also worked, thank you for the suggestion.

Jonathan M Davies:

bool[char[]] set;

doesn't work, because the key isn't immutable. When he tries to use it the compiler will scream at him (though ideally, it wouldn't even let him declare it - there's a bug report on that).

When I use a key with it I use:

set[cast(immutable) key] = true;

This doesn't generate any compiler errors.

auto words2 = set.keys.sort;
auto words2 = set.keys.dup.sort;

both did what I wanted using string. Thank you, I'll convert everything to strings. I guess I created my own difficulties by using char arrays.

Reply via email to