www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How do you reference variables in an AA of Variants?

reply Enjoys Math <enjoysmath gmail.com> writes:
This:	
         double b = 1.0;

	Variant[string] aa = ["b": &b];

	writeln(aa["b"]);

fails with:

Error: cannot implicitly convert expression(["b":&b]) of type 
double*[string] to VariantN!20u[string]

Helps please!
Feb 08 2016
next sibling parent Basile B. <b2.temp gmx.com> writes:
On Tuesday, 9 February 2016 at 03:49:11 UTC, Enjoys Math wrote:
 This:	
         double b = 1.0;

 	Variant[string] aa = ["b": &b];

 	writeln(aa["b"]);

 fails with:

 Error: cannot implicitly convert expression(["b":&b]) of type 
 double*[string] to VariantN!20u[string]

 Helps please!
Use an intermediate to carry the result of &<stuff>: double b = 1.0; Variant vb = &b; Variant[string] aa = ["b": vb]; writeln(aa["b"]); &b is a rvalue. vb is a lvalue.
Feb 08 2016
prev sibling next sibling parent =?UTF-8?Q?Ali_=c3=87ehreli?= <acehreli yahoo.com> writes:
On 02/08/2016 07:49 PM, Enjoys Math wrote:
 This:
          double b = 1.0;

      Variant[string] aa = ["b": &b];

      writeln(aa["b"]);

 fails with:

 Error: cannot implicitly convert expression(["b":&b]) of type
 double*[string] to VariantN!20u[string]

 Helps please!
When initializing the array, you have to use Variant(&b): import std.stdio; import std.variant; void main() { double b = 1.5; Variant[string] aa = ["b": Variant(&b)]; writeln(aa); writeln(aa["b"]); writeln(*aa["b"].get!(double*)); } Prints something like the following: ["b":7FFD0104B100] 7FFD0104B100 1.5 Ali
Feb 08 2016
prev sibling parent Wyatt <wyatt.epp gmail.com> writes:
On Tuesday, 9 February 2016 at 03:49:11 UTC, Enjoys Math wrote:
 This:	
         double b = 1.0;

 	Variant[string] aa = ["b": &b];

 	writeln(aa["b"]);

 fails with:

 Error: cannot implicitly convert expression(["b":&b]) of type 
 double*[string] to VariantN!20u[string]

 Helps please!
I've found bugbears like this are distressingly common in std.variant. Another one you might find yourself dealing with is https://issues.dlang.org/show_bug.cgi?id=10223, which applies to AAs as much as regular arrays. It's actually why I stopped using it in favour of Adam Ruppe's arsd.jsvar. -Wyatt
Feb 09 2016