Proposal: Multidimensional opSlice solution
Lars T. Kyllingstad
public at kyllingen.NOSPAMnet
Mon Mar 8 11:41:17 PST 2010
Don wrote:
> Norbert Nemec wrote:
>> Don wrote:
>>> Norbert Nemec wrote:
>>>> Hi there,
>>>>
>>>> in implementing multi-dimensional arrays, the current way of
>>>> overloading the slicing operator does not scale up.
>>>>
>>>> Currently, there is opIndex working for an arbitrary number of
>>>> indices, but opSlice works only for one dimension. Ultimately, it
>>>> should be possible to allow slicing for more than one dimension, and
>>>> mixing it with indexing for e.g.:
>>>> A[4,7..8,7,2..5]
>>>> So far, no clean solution for overloading this has been suggested.
>>>
>>> A solution was suggested while you were away.
>>> You don't need a new opRange operator, a simple tuple struct like:
>>> struct Slice(T) { T from; T to; }
>>> in std.object is enough.
>>> Note that:
>>> A[4, Slice(7,8), 7, Slice(2,5)]
>>>
>>> will work with the existing compiler. So it's just a tiny syntax
>>> sugar issue.
>>
>> I know this solution. It is exactly the "syntax sugar" issue that I
>> see as the problem here:
>>
>> The compiler would need to be aware of the data type Slice. It would
>> therefore have to be something like a "builtin" type. If I am not
>> mistaken, the language definition so far never makes use of "builtin"
>> struct types.
>
> You are mistaken <g>.
> object, TypeInfo, AssociativeArray, ...
> Complex will be added to that list, too.
It will? For complex literals, then?
-Lars
More information about the Digitalmars-d
mailing list