On Friday, 10 March 2017 at 15:41:31 UTC, Jonathan M Davis wrote:
On Friday, March 10, 2017 14:15:45 Nick Treleaven via
Digitalmars-d wrote:
On Friday, 10 March 2017 at 01:10:21 UTC, H. S. Teoh wrote:
> On Fri, Mar 10, 2017 at 01:07:33AM +0000, XavierAP via
>
> Digitalmars-d wrote:
>> The web reference tersely says under its *Slice* Operator
>> Overloading chapter [1]: "To overload a[], simply define
>> opIndex with no parameters."
>>
>> Should not the overload of opSlice() with no arguments be
>> deprecated?
>> Am I missing something?
>
> Using opSlice() for slicing (i.e., arr[]) is old,
> backward-compatible
> behaviour.
This seems non-intuitive to me (at least for single dimension
containers) - when you see var[], do you think var is being
indexed or do you think var is being sliced like an array
(equivalent to var[0..$])?
Yeah, I've never understood how it made any sense for opIndex
to be used for slicing, and I've never used it that way. I
generally forget that that change was even made precisely
because it makes no sense to me, whereas using opSlice for
slicing makes perfect sense. I always use opIndex for indexing
and opSlice for slicing just like they were originally designed.
- Jonathan M Davis
Indexing is a bit like slicing with only 1 element. Slicing is
the generalisation of the indexing operation. I think it's quite
logical. This said I know nothing about the rationale and
discussions about that subject. This was purely my wag (wild ass
guess).