octave-maintainers
[Top][All Lists]

## RE: structure discussion

 From: Paul Billings Subject: RE: structure discussion Date: Wed, 12 Oct 2005 09:05:13 -1000

```This is one of those times that I appreciate Octave's syntax over ML:
for(i=1:length(g)) g(i).a = 2; end;  % ML is plain *ugly*
g(:).a = 2;  % Octave is nice!
g.a = 2;  % Would be even nicer, see below

In an response, I said, "I disagree with your second point: I think the
notation "g.b = 1" is ambiguous and should be an error regardless of the
existance of .b.  "
I have to retract this now that I have thought about it.  I think "g.a"
should be equivalent to g(:).a.

In one sense, this agrees with the matrix precedent.  In that case, index
dereferencing is analogous to the structure referencing:
a = reshape(1:9, [3 3]);
a(6) is equivalent to a(:)(6)
a.b should be equiv. to a(:).b, IMO.

Paul

> -----Original Message-----
> Sent: Wednesday, October 12, 2005 8:31 AM
> To: Paul Billings
> Subject: RE: structure discussion
>
>
> On Tue, 11 Oct 2005, Paul Billings wrote:
>
> > Perhaps a more concise example: with version 2.1.71,
> >    clear g; g(1).a = g(2).a = 1;
> >    g(:).a = 2;  % does what you'd expect (both .a values are changed)
> >    g(:).b = 1   % does NOT do what I would expect
>
> FYI, Here is what the competition gives:
>
> >> clear g; g(1).a =1; g(2).a = 1;
> >> g(:).a = 2;  % does what you'd expect (both .a values are changed)
> ??? Insufficient outputs from right hand side to satisfy comma separated
> list expansion on left hand side.  Missing [] are the most likely cause.
>
> >> g(:).b = 1   % does NOT do what I would expect
> ??? Insufficient outputs from right hand side to satisfy comma separated
> list expansion on left hand side.  Missing [] are the most likely cause.
>
> --