On Sunday, 12 March 2017 at 07:58:40 UTC, helxi wrote:
How would an experienced programmer declare an associative array of strings that has 2 keys?

My initial impression was string[string][2] my_array; which does not seem to work.

Here is a snippet of the code I am working on:


import std.string;
import std.stdio;


string[string] change(ref string[string] arg_array){
        //..
        arg_array["first"] = strip(readln());
        //..
        arg_array["second"] = strip(readln());
        //..
        return def;
}


You appear to be confused about the way arrays work.
string[string] foo; //declares an assoc array of strings, index by string string[string][2] bar; // declares a static array of two string[string] foo = { "key1" : "some data", "key2" : "some other data" }; // initialise foo with some data
foo["blarg"] = "fxgsdzfcxf"; // insert some more data

associative array of strings that has 2 keys?

is a regular associative array that has two entries. much like the difference between
int[] baz = [1 ,2]; // has two elements
int[][2] quux; // a static array of length 2 whose elements are of type int[]

void main(){
        string[string][2] test; // remove the `[2]`
        change(string[string] test);
just do
        change(test);
it is invalid syntax to have a type before the variable in a function call, unless you were trying to cast it, in which use `cast(type)(expression)`
}
        

If you wish to reserve capacity for the array, use `arr.reserve(N)` to allocate memory enough to hold N elements.

Reply via email to