use variant as associative array
Daniel Keep
daniel.keep.lists at gmail.com
Thu Feb 11 17:34:06 PST 2010
GG wrote:
> I try to use variant as associative array with dmd2.039,
>
> Variant[char[]][int] aa;
> aa[0]["Month"] = "Jan";
> aa[0]["Profit"] = 500;
> aa[1]["Month"] = "Feb";
> aa[1]["Profit"] = 800;
>
> I got core.exception.RangeError at main(28): Range violation
> I'm doing something wrong ? Or it's same problem as :
> http://digitalmars.com/d/archives/digitalmars/D/Variant_string_associative_array_..._fail_87248.html
> Same problem with dmd2.040
>
> Thanks !
> GG
I got the following to work with Tango's Variant (dmd 1.051 + pre-0.99.9
trunk):
Variant[char[]][int] aa;
aa[0] = typeof(aa[0]).init;
aa[0]["Month"] = Variant("Jan");
aa[0]["Profit"] = Variant(500);
aa[1] = typeof(aa[0]).init;
aa[1]["Month"] = Variant("Feb");
aa[1]["Profit"] = Variant(800);
There's actually two problems at work here:
1. You can't use a nested associative array without initialising it.
2. You apparently can't assign to an aa of Variants for some reason.
Keep in mind that Variants are basically a hack on the language; that
assigning to a Variant value in an AA doesn't work isn't entirely
surprising.
More information about the Digitalmars-d-learn
mailing list