Is [] mandatory for array operations?

Robert Jacques sandford at jhu.edu
Thu May 6 20:02:43 PDT 2010


On Thu, 06 May 2010 22:46:42 -0400, Michel Fortin  
<michel.fortin at michelf.com> wrote:

> On 2010-05-06 21:48:09 -0400, "Robert Jacques" <sandford at jhu.edu> said:
>
>> On Thu, 06 May 2010 20:57:07 -0400, Michel Fortin   
>> <michel.fortin at michelf.com> wrote:
>>
>>> On 2010-05-06 19:02:03 -0400, Jason House  
>>> <jason.james.house at gmail.com>  said:
>>>
>>>> Don Wrote:
>>>>
>>>>>  x[] = sin(y[]);
>>>>  I strongly favor the first syntax since it matches how I'd write it  
>>>> in  a for loop.
>>>> i.e. I'd replace [] with [i].
>>>  This is the best way to see array operations I've read up to now:   
>>> replace [] with [i], i being the current loop index. It's so simple  
>>> to  explain.
>>>
>>>> If there was a sin variant that took array input, then I'd expect  
>>>> the  line to be:
>>>>   x[] = sin(y)[]
>>>>  which would translate to creating a temporary to hold sin(y) array.
>>>  Makes sense too.
>>  this:
>> for(int i = 0; i < x.length; i++) {
>>      x[i] = sin(y)[i];
>> }
>>  makes sense?
>
> Yes, if as stated by Jason there was a sin variant that took array input.
>
> That said, I'd expect the compiler to call sin(y) only once, so it'd be  
> more like that:
>
> 	auto sinY = sin(y);
> 	for(int i = 0; i < x.length; i++) {
> 		x[i] = sinY[i];
> 	}
>

Ah, thank you for the clarification. I mis-read the first post. Although,  
for sin(y)[] to work, the variant would have to return an array in  
addition to taking one.

hmm...
given
real foo(real value) {...}
and
real[] foo(real[] value) {...}

what should happen with the follow line of code:

x[] = foo(y[]) + z[];


More information about the Digitalmars-d mailing list