Ada_Ru форум

Обсуждение языка Ада

default discriminant

Оставить новое сообщение

Сообщения

Dmitriy Anisimkov
default discriminant
2004-07-14 14:06:54

*В книжке Александра Гаввы, примерно вот тут

 

http://www.ada-ru.org/V-0.4w/part_1/ch_05.html#s5.3.3

 

чуть пониже есть пример.

 

 

-------------------------------------------

type* Property *is array* (Positive *range* <>) *of* Float;

*type* Man (Number: Positive := 2; Size: Positive := 10) *is

record*

Name : String (1..Size);

Prop_Array : Property (1..Number);

*end record*;

 

The_Man : Man;

 

The_Man.Name := "Ivanov I I";

The_Man.Prop_Array := (25.0, 50.0);

 

. . .

The_Man := (

Number => 3,

Size => 8,

Name => "Pyle I C",

Prop_Array => (25.0, 50.0, 160.5)

);

----------------------------

 

И еще чуть ниже.

 

---------------------

*type* Text (Length : Positive := 20) *is*

*record*

Value : String(1..Length);

*end record*;

--------------

 

Мы уже обсуждали это, что нет смысла устанавливать default value на дискриминанты с большим диапазоном,

поскольку обьявление переменных без указания дискриминанта пытается захватить наибольший возможный размер.

А это повлечет переполнение стека.

 

Вот компилируемый пример.

 

----------------------------

procedure gad is

 

type Property is array (Positive range <>) of Float;

 

type Man (Number : Positive := 2; Size : Positive := 10) is record

Name : String (1 .. Size);

Prop_Array : Property (1 .. Number);

end record;

 

The_Man : Man;

 

begin

The_Man.Name := "Ivanov I I";

The_Man.Prop_Array := (25.0, 50.0);

end gad;

-----------------------------------------------------

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти