Smart slicing
Neal Becker
ndbecker2 at gmail.com
Sat Mar 22 12:07:26 PDT 2008
Bill Baxter wrote:
> bearophile wrote:
>> Hello, I have discussed this topic a bit on the IRC #D channel too.
>>
>> Array slicing is a very useful feature of D. In Python the array (list)
>> slicing is even more powerful, because array indexes can be negative
>> (they wrap around, so -1 equals to $-1 in D, but I like the D solution
>> too, it's faster too), and it has a third optional parameter (stride)
>> that can be a negative number too:
>>
>
>>>>> "abcdefghilmn"[2:30]
>> 'cdefghilmn'
>>>>> "abcdefghilmn"[30:50]
>> ''
>>
>> (I presume D has used .. instead of : because : is used by AAs, and {}
>> can't be used to denote AAs because it's used already in the C syntax). I
>> don't miss all those features in D (D arrays have .reverse that replaces
>> the common case of stride=-1), but I miss the feature you can see in the
>> last two examples, that is the overflowing index is put back to the
>> actual max-min index bound of the array.
>
> I had no idea you could do that in Python. I'd much rather get an error
> there. My guess is that most cases where you aren't sure how much to
> slice out are covered by end-relative indexes, like stuff[30:] or
> stuff[30:-1]. In D syntax stuff[30..$] and stuff[30..$-1].
>
> For safe-to-go-out-of-bounds slicing like you're talking about, I'd
> rather implement that as a function call, something like your
> stuff.slice(2,30)
> or you can probably get this syntax with current D
> stuff.slice[2..30]
>
> It's not something that I'd want to use most of the time, and when I do,
> I'd want to make it clear that I'm relying on automatic bounds trimming.
>
> --bb
Please no!
Silently ignoring the error is bad and unpythonic. When I posted this
opinion to python-devel BDFL Guido replied, basically agreeing with me, but
saying it was too late to change. But for D, Please no!
More information about the Digitalmars-d
mailing list