Использование атрибутов массива позволяет программисту
• A'First — индекс первого элемента А.
• A'Last — индекс последнего элемента А.
• A'Length — число элементов в А.
• A'Range — эквивалент A'First.. A'Last.
Например:
Ada |
for I in P'Range loop
for J in 1+1 .. P'Lastloop
end Sort;
Использование атрибутов массива позволяет программисту писать чрезвычайно устойчивое к изменениям программное обеспечение: любое изменение границ массива автоматически отражается в атрибутах.
Подводя итог, можно сказать: контроль соответствия типов для массивов — мощный инструмент для улучшения надежности программ; однако определение границ массива не должно быть частью статического определения типа.
5.4. Подтипы массивов в языке Ada
Подтипы, которые мы обсуждали в разделе 4.5, определялись добавлением ограничения диапазона к дискретному типу (перечисляемому или целочисленному). Точно так же подтип массива может быть объявлен добавлением к типу неограниченного массива ограничения индекс'.
type A_Type is array(lnteger range о) of Float;
subtype Line is A_Type(1 ..80);
L, L1, L2: Line;
Значение этого именованного подтипа можно использовать как фактический параметр, соответствующий формальному параметру исходного неограниченного типа:
Sort(L);
В любом случае неограниченный формальный параметр процедуры Sort динамически ограничивается фактическим параметром при каждом вызове процедуры.
Приведенные в разделе 4.5 рассуждения относительно подтипов применимы и здесь. Массивы разных подтипов одного и того же типа могут быть присвоены друг другу (при условии, что они имеют одинаковое число элементов), но массивы разных типов не могут быть присвоены друг другу без явного преобразования типов.