Skip to content
Snippets Groups Projects
Commit 9ed54350 authored by Paul Sokolovsky's avatar Paul Sokolovsky
Browse files

Implement slicing for tuples.

parent 13cfabd1
No related branches found
No related tags found
No related merge requests found
#include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdint.h> #include <stdint.h>
#include <assert.h> #include <assert.h>
...@@ -87,7 +88,15 @@ static mp_obj_t tuple_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) { ...@@ -87,7 +88,15 @@ static mp_obj_t tuple_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) {
switch (op) { switch (op) {
case RT_BINARY_OP_SUBSCR: case RT_BINARY_OP_SUBSCR:
{ {
// tuple load #if MICROPY_ENABLE_SLICE
if (MP_OBJ_IS_TYPE(rhs, &slice_type)) {
machine_uint_t start, stop;
assert(m_seq_get_fast_slice_indexes(o->len, rhs, &start, &stop));
mp_obj_tuple_t *res = mp_obj_new_tuple(stop - start, NULL);
m_seq_copy(res->items, o->items + start, res->len, mp_obj_t);
return res;
}
#endif
uint index = mp_get_index(o->base.type, o->len, rhs); uint index = mp_get_index(o->base.type, o->len, rhs);
return o->items[index]; return o->items[index];
} }
......
# basic tuple functionality
x = (1, 2, 3 * 4)
print(x)
try:
x[0] = 4
except TypeError:
print("TypeError")
print(x)
try:
x.append(5)
except AttributeError:
print("AttributeError")
print(x[1:])
print(x[:-1])
print(x[2:3])
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment