dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #07449
Re: operator() or operator[]
On Fri, Apr 11, 2008 at 02:24:13PM +0200, Dag Lindbo wrote:
> Anders Logg wrote:
> > On Fri, Apr 11, 2008 at 01:34:24PM +0200, Martin Sandve Alnæs wrote:
> >> 2008/4/11, Anders Logg <logg@xxxxxxxxx>:
> >>> On Fri, Apr 11, 2008 at 12:23:15PM +0100, Garth N. Wells wrote:
> >>> >
> >>> >
> >>> > Anders Logg wrote:
> >>> > > Which one do we want to use for element access in vectors and
> >>> > > matrices. It looks like operator() is now implemented for uBlasVector,
> >>> > > but isn't operator[] more natural to use?
> >>> > >
> >>> >
> >>> > Much the same to me. We've used (.,.) for matrices, so it seems natural
> >>> > to use (.) for vectors.
> >>> >
> >>> > Garth
> >>>
> >>>
> >>> We could use [] for matrices also I guess.
> >>>
> >>> Then it will look the same as numpy.
> >> It's useful to index vectors with [], since the code will be similar
> >> for regular arrays.
> >
> > I forgot something important, namely that operator[] expects exactly
> > one argument, so we can't do A[i, j] for matrices.
> >
> > Maybe then it's better to have () both for vectors and matrices?
> >
>
> Whatever you do with matrices, I don't have an opinion.
>
> However, I think operator[] should be present for vectors. One can argue
> that it does not _need_ to be there, but the fact is that it _is_ in the
> 0.7.2 interface (it worked until yesterday for uBlasVector, but it was
> maybe handled by uBlas itself?).
>
> /Dag
Other opinions? Should we have both?
Since we have A(i, j), it will be expected that x(i) works.
But it will also be expected that x[i] works (since it works in numpy
and it has worked before for uBlasVector).
--
Anders
Follow ups
References