dynamic get from variantArray() data table
Alex Parrill via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Oct 13 09:38:10 PDT 2015
On Tuesday, 13 October 2015 at 16:22:36 UTC, data pulverizer
wrote:
> Thanks for the suggestion Alex, however I need the dynamic
> behaviour properties of variantArray(), writing a struct each
> time would be undesirable.
>
> Perhaps I could boil down the question to something like, is
> there a way of writing
>
> auto x = dt[0][0];
> auto y = x.get!(x.type - or whatever); // to get the actual
> value of x rather than .VariantN! ... type
>
> For some kind of auto cast back to basic type.
The problem is that you can't do `x.get!(x.type)`, because the
type of the expression must be known at compile time, but
`x.type` is a runtime value. You'd have to create a branch for
each type that `x.type` might be.
But again, unless you are dealing with a truly dynamic layout
(and not a bunch of fixed layouts), there's better options. For
example, you can use `std.range.zip` to iterate through each
column array in lockstep, returning tuples for each element.
foreach(entry; zip(names, ages, languages)) {
write(entry.expand);
}
More information about the Digitalmars-d-learn
mailing list