digitalmars.D - Access to intersection fields of an algebraic data type
- sighoya (17/17) Jan 19 2019 Is there a solution for the following problem:
- Meta (3/20) Jan 19 2019 You want the untyped version of std.variant.visit:
- sighoya (23/48) Jan 19 2019 Thanks @Meta,
- Nicholas Wilson (3/20) Jan 19 2019 Try using http://code.dlang.org/packages/taggedalgebraic I find
Is there a solution for the following problem: import std.variant : Algebraic; struct A { int a=2; } struct B { int a=2; }; void main() { Algebraic!(A,B) c=A(); writeln(c.a); return; } Error: no property a for type VariantN!(4LU, A, B)
Jan 19 2019
On Saturday, 19 January 2019 at 17:40:53 UTC, sighoya wrote:Is there a solution for the following problem: import std.variant : Algebraic; struct A { int a=2; } struct B { int a=2; }; void main() { Algebraic!(A,B) c=A(); writeln(c.a); return; } Error: no property a for type VariantN!(4LU, A, B)You want the untyped version of std.variant.visit: writeln(c.visit!(aOrB => aOrB.a));
Jan 19 2019
On Saturday, 19 January 2019 at 17:51:58 UTC, Meta wrote:On Saturday, 19 January 2019 at 17:40:53 UTC, sighoya wrote:Thanks Meta, With the help of dlang's UFCS, we can rewrite it more idiomatically as: import std.variant : Algebraic; struct A { int a=2; } struct B { int a=2; }; int a(Algebraic!(A,B) c) { return cast(int)(visit!((c)=>c.a)(c)); } void main() { Algebraic!(A,B) c=A(); writeln(c.a); return; }Is there a solution for the following problem: import std.variant : Algebraic; struct A { int a=2; } struct B { int a=2; }; void main() { Algebraic!(A,B) c=A(); writeln(c.a); return; } Error: no property a for type VariantN!(4LU, A, B)You want the untyped version of std.variant.visit: writeln(c.visit!(aOrB => aOrB.a));
Jan 19 2019
On Saturday, 19 January 2019 at 17:40:53 UTC, sighoya wrote:Is there a solution for the following problem: import std.variant : Algebraic; struct A { int a=2; } struct B { int a=2; }; void main() { Algebraic!(A,B) c=A(); writeln(c.a); return; } Error: no property a for type VariantN!(4LU, A, B)Try using http://code.dlang.org/packages/taggedalgebraic I find it much better.
Jan 19 2019