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