Ada Reference Manual (Ada 2022)Legal Information
Contents   Index   References   Search   Previous   Next 

4.1.2 Slices

1
A slice denotes a one-dimensional array formed by a sequence of consecutive components of a one-dimensional array. A slice of a variable is a variable; a slice of a constant is a constant; a slice of a value is a value. 

Syntax

2
slice ::= prefix(discrete_range)

Name Resolution Rules

3
The prefix of a slice shall resolve to denote a one-dimensional array (after any implicit dereference).
4
The expected type for the discrete_range of a slice is the index type of the array type. 

Static Semantics

5
A slice denotes a one-dimensional array formed by the sequence of consecutive components of the array denoted by the prefix, corresponding to the range of values of the index given by the discrete_range.
6
The type of the slice is that of the prefix. Its bounds are those defined by the discrete_range.

Dynamic Semantics

7
For the evaluation of a slice, the prefix and the discrete_range are evaluated in an arbitrary order. If the slice is not a null slice (a slice where the discrete_range is a null range), then a check is made that the bounds of the discrete_range belong to the index range of the array denoted by the prefix. Constraint_Error is raised if this check fails.
8/5
NOTE 1   By the rules given in 3.10.2, a slice is illegal as the prefix of an Access attribute_reference, even if the components or the array as a whole are aliased. 
9
NOTE 2   For a one-dimensional array A, the slice A(N .. N) denotes an array that has only one component; its type is the type of A. On the other hand, A(N) denotes a component of the array A and has the corresponding component type. 

Examples

10
Examples of slices:
11
Stars(1 .. 15)        -- a slice of 15 characters           (see 3.6.3)
Page(10 .. 10 + Size) -- a slice of 1 + Size components     (see 3.6)
Page(L)(A .. B)       -- a slice of the array Page(L) (see 3.6)
Stars(1 .. 0)         -- a null slice                 (see 3.6.3)
My_Schedule(Weekday)  -- bounds given by subtype      (see 3.6.1 and 3.5.1)
Stars(5 .. 15)(K)     -- same as Stars(K)             (see 3.6.3)
                      -- provided that K is in 5 .. 15

Contents   Index   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe