| --- | |
| { | |
| "title": "ARRAY_SLICE", | |
| "language": "en-US", | |
| "description": "Return a subarray, supporting starting offset and length." | |
| } | |
| --- | |
| ## Function | |
| Return a subarray, supporting starting offset and length. | |
| ## Syntax | |
| - `ARRAY_SLICE(arr, offset)` | |
| - `ARRAY_SLICE(arr, offset, length)` | |
| ## Parameters | |
| - `arr`: `ARRAY<T>`. | |
| - `offset`: starting position. Positive values count from the head (`1` is the first element); negative values count from the tail (`-1` is the last element). | |
| - `length`: length to take. A positive value takes `length` elements; a negative value is treated as length 0. | |
| ## Return value | |
| - Returns `ARRAY<T>` of the same type as the input. | |
| ## Usage notes | |
| - Out-of-bounds safe: the start and end are clipped to the array boundaries. If there is no overlap, an empty array is returned. | |
| ## Examples | |
| - Positive starting offset: from the offset to the right end | |
| - `ARRAY_SLICE([1,2,3,4,5,6], 2)` -> `[2,3,4,5,6]` | |
| - Negative starting offset: from the offset to the right end | |
| - `ARRAY_SLICE([1,2,3,4,5,6], -3)` -> `[4,5,6]` | |
| - Positive length: take to the right starting from offset | |
| - `ARRAY_SLICE([1,2,3,4,5,6], 2, 3)` -> `[2,3,4]` | |
| - `ARRAY_SLICE([1,2,3,4,5,6], -4, 2)` -> `[3,4]` | |
| - Negative length: treated as length 0 | |
| - `ARRAY_SLICE([1,2,3,4,5,6], 2, -2)` -> `[]` | |
| - Out-of-range arguments: return empty array | |
| - `ARRAY_SLICE([1,2,3,4,5,6], 10, 3)` -> `[]` | |
| - Any `NULL` argument: return `NULL` | |
| - `ARRAY_SLICE([1,2,3], NULL, 2)` -> `NULL` | |
| - `ARRAY_SLICE([1,2,3], 2, NULL)` -> `NULL` | |
| - `ARRAY_SLICE(NULL, 2, 3)` -> `NULL` | |