struct construct with array

2011-03-12 Thread Caligo
struct Test{

  public double[3] ar_;
  this(double[3] ar){
this.ar_ = ar;
  }
}

void main(){

  double[3] v1 = [1.0, 2.0, 3.0];
  double[3] v2 = [2.0, 3.0, 4.0];

  auto t1 = Test(v1[0..$] + v2[0..$]); // error

}


I want to add those two arrays and call the constructor in one line, but I'm
getting an error.  Any ideas?


Re: struct construct with array

2011-03-12 Thread Andrej Mitrovic
The best thing I can think of is introducing a temp variable:

void main(){
double[3] v1 = [1.0, 2.0, 3.0];
double[3] v2 = [2.0, 3.0, 4.0];

double[3] v3 = v1[] + v2[];
auto t1 = Test(v3);
}


Re: struct construct with array

2011-03-12 Thread Ali Çehreli

On 03/12/2011 10:42 AM, Caligo wrote:

struct Test{

   public double[3] ar_;
   this(double[3] ar){
 this.ar_ = ar;
   }
}

void main(){

   double[3] v1 = [1.0, 2.0, 3.0];
   double[3] v2 = [2.0, 3.0, 4.0];

   auto t1 = Test(v1[0..$] + v2[0..$]); // error

}


I want to add those two arrays and call the constructor in one line, but I'm
getting an error.  Any ideas?



Even a simpler code doesn't work:

double[3] v1 = [1.0, 2.0, 3.0];
double[3] v2 = [2.0, 3.0, 4.0];

auto result = v1[0..$] + v2[0..$];

Error: Array operation v1[0LU..__dollar] + v2[0LU..__dollar] not implemented

The following doesn't work either:

auto result = v1[] + v2[];
auto result = v1 + v2;

dmd does not implement those features yet.

Ali


Re: struct construct with array

2011-03-12 Thread Ali Çehreli

On 03/12/2011 02:52 PM, Ali Çehreli wrote:

On 03/12/2011 10:42 AM, Caligo wrote:

struct Test{

public double[3] ar_;
this(double[3] ar){
this.ar_ = ar;
}
}

void main(){

double[3] v1 = [1.0, 2.0, 3.0];
double[3] v2 = [2.0, 3.0, 4.0];

auto t1 = Test(v1[0..$] + v2[0..$]); // error

}


I want to add those two arrays and call the constructor in one line,
but I'm
getting an error. Any ideas?



Even a simpler code doesn't work:

double[3] v1 = [1.0, 2.0, 3.0];
double[3] v2 = [2.0, 3.0, 4.0];

auto result = v1[0..$] + v2[0..$];

Error: Array operation v1[0LU..__dollar] + v2[0LU..__dollar] not
implemented

The following doesn't work either:

auto result = v1[] + v2[];
auto result = v1 + v2;

dmd does not implement those features yet.

Ali


I see from the other posts that the problem has something to do with 
auto. This works:


double[3] v3 = v1[] + v2[];

Ali