Hi,

Robert Bradshaw wrote:
> On Nov 13, 2008, at 2:30 PM, Stefan Behnel wrote:
>> Greg Ewing wrote:
>>> You can do
>>>
>>>    a[0], a[1], a[2], a[3], a[4] = 1, 3, 28, 5, 3
>>>
>>> which will get turned into a series of assignments.
>>>
>>> Ideally, what you *should* be able to do is
>>>
>>>    a[:] = 1, 3, 28, 5, 3
>> In Cython, you can now do
>>
>>      cdef int a[5]
>>      a[:] = [1, 3, 28, 5, 3]
>>
>> or
>>
>>      cdef int a[20]
>>      a[1:6] = [1, 3, 28, 5, 3]
>>
>> or even
>>
>>      cdef int a[20]
>>      start = 1
>>      end = 6
>>      a[start:end] = [1, 3, 28, 5, 3]
> 
> Very cool.

You did most of the work already.


>> However, the way it's currently implemented does no bounds  
>> checking, so it's
>> pretty easy to shoot yourself in the foot when you assign non- 
>> existing slices.
>> It's actually not so easy to determine at compile time how long the  
>> lhs slice
>> is, and how long the assigned sequence is.
>>
>> There's definitely more room for improvements. :)
> 
> Ouch. We can make sure (at runtime) that the rhs has the right size,

That's what I thought, too. There's a couple of cases that we can handle
efficiently, and some where we can add runtime checks.

Stefan

_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to