digitalmars.D - Variants array and IDK
- g g (12/12) Jan 30 2011 IDK where to put this.
- Nick Sabalausky (25/33) Jan 31 2011 The problem with that is that x is only an int at runtime. It's the same...
- Robert Jacques (9/25) Jan 31 2011 One of Variant's design goals is to be used for interfacing/implementing...
- Robert Jacques (5/13) Jan 31 2011 // Although this has to be true
IDK where to put this. first thing: Could it be a way to collapse Variants in std.variant?, like Variant x = Variant(1) Variant y = Variant([x,x,x,x]) //y could be simplified to Variant(int[]) instead of Variant(Variant(int)[]) //now it is not implemented (as far i know) Also if want to know if using Variant internally for a scripting language is recommendable ( or acceptable) I am facing the problem? writing my weird language ( https://github.com/zkp0s/Dw fell free to comment on it __not finished__) Excuse me if I wrote in the wrong newsgroup. I didn't know where to put it, .learn .D or .annouce ( Dw) Thanks for reading .
Jan 30 2011
"g g" <g g.com> wrote in message news:ii5mtb$12qv$1 digitalmars.com...IDK where to put this. first thing: Could it be a way to collapse Variants in std.variant?, like Variant x = Variant(1) Variant y = Variant([x,x,x,x]) //y could be simplified to Variant(int[]) instead of Variant(Variant(int)[]) //now it is not implemented (as far i know)The problem with that is that x is only an int at runtime. It's the same problem as this: Variant x = Variant(1); int z = x; // ERROR: x might not be an int. You have to do it like this: Variant x = Variant(1); if(x.convertsTo!int()) { int z = x.coerce!int(); } else // Do something else Or you skip the "if(x.convertsTo!int())" part if you expect that x should always be an int. If it ever isn't an int then coerce will throw an exception. So if you want y to be Variant(int[]), you need to do: Variant x = Variant(1); if(x.convertsTo!int()) { auto xInt = x.coerce!int(); Variant y = Variant([xInt,xInt,xInt,xInt]); } else // Do something else
Jan 31 2011
On Mon, 31 Jan 2011 02:04:11 -0500, g g <g g.com> wrote:IDK where to put this. first thing: Could it be a way to collapse Variants in std.variant?, like Variant x = Variant(1) Variant y = Variant([x,x,x,x]) //y could be simplified to Variant(int[]) instead of Variant(Variant(int)[]) //now it is not implemented (as far i know) Also if want to know if using Variant internally for a scripting language is recommendable ( or acceptable) I am facing the problem? writing my weird language ( https://github.com/zkp0s/Dw fell free to comment on it __not finished__) Excuse me if I wrote in the wrong newsgroup. I didn't know where to put it, .learn .D or .annouce ( Dw) Thanks for reading .One of Variant's design goals is to be used for interfacing/implementing scripting languages. So, yes, I'd say it's both recommended and acceptable. In fact, I'd encourage you to post to the newsgroup or bugzilla any rough edges you run into with variant. I've been working on an update to it which fixes all current bugzilla issues and implements a runtime-reflection system. (https://jshare.johnshopkins.edu/rjacque2/public_html/variant.mht, https://jshare.johnshopkins.edu/rjacque2/public_html/variant.d)
Jan 31 2011
On Mon, 31 Jan 2011 02:04:11 -0500, g g <g g.com> wrote:IDK where to put this. first thing: Could it be a way to collapse Variants in std.variant?, like Variant x = Variant(1) Variant y = Variant([x,x,x,x]) //y could be simplified to Variant(int[]) instead of Variant(Variant(int)[]) //now it is not implemented (as far i know)// Although this has to be true assert( y.type == typeid(Variant[]) ); // Should coerce support such lowering/conversions/collapses? i.e. int[] z = y.coerce!(int[])();
Jan 31 2011