On Sunday, 15 April 2018 at 17:59:01 UTC, Dgame wrote:
How am I supposed to insert a struct with immutable members
into an assoc. array?
Reduced example:
----
struct A {
immutable string name;
}
A[string] as;
as["a"] = A("a"); // Does not work
----
Via a static this() it would work. But I guess, this is not what
you are looking for, is it?
´´´
static this()
{
as["a"] = A("a");
}
void main()
{
assert(as["a"].name == "a");
}
struct A {
immutable string name;
}
A[string] as;
´´´
It also works, if you hide the AA in a class and all the
insertions into the constructor.
´´´
/*
static this()
{
as["a"] = A("a");
}
*/
void main()
{
auto c = new Container(A("a"));
assert(c.as["a"].name == "a");
}
struct A {
immutable string name;
}
class Container
{
A[string] as;
this(A a)
{
as[a.name] = a;
}
}
´´´