4.1.2 Slices
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
Name Resolution Rules
The 
prefix 
of a 
slice 
shall resolve to denote a one-dimensional array (after any implicit dereference).
 
Static Semantics
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.
 
Dynamic Semantics
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.
 
3  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
Examples of slices: 
  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 
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe