On Sun, 07 Nov 2010 14:08:17 -0500 Jesse Phillips <jessekphillip...@gmail.com> wrote:
> spir Wrote: > > > No, in fact a variadic param list is not an array -- this is according to > > TDPL an iternal type of the language. Trying to assign it to an X[] var > > throws: > > DeeMatch.d(371): Error: cannot implicitly convert expression (patterns) of > > type DeeMatch.Pattern to Pattern[] > > Well, actually, the type of the expression given in the error > > (DeeMatch.Pattern) is wrong: this is the type of each element of the > > variadic list. > > Well I took the example for type safe variadics and added an int[] fish > storing the array... So am I missing something? > > http://ideone.com/Kyi78 No, you are right... I have certainly done an error when trying. Thank you. Note: this works also with elements of various subtypes (so I can use this method to replace array parameters of type constructors): class E {} class E1 : E { int i; this(int i...) { this.i = i; } override string toString () { return format("E1(%s)", this.i); } } class E2 : E { float f; this(float f...) { this.f = f; } override string toString () { return format("E2(%s)", this.f); } } class C { E[] ee; this(E[] ee...) { this.ee = ee; } } //~ class C { //~ int[] ii; //~ this(int[] ii...) { //~ this.ii = ii; //~ } //~ } void main () { //~ auto c = new C(1,2,3); //~ writeln(c.ii); auto c = new C(new E1(1), new E2(1.1)); writeln(c.ee); } Denis -- -- -- -- -- -- -- vit esse estrany ☣ spir.wikidot.com