ada
매개 변수화 된 유형
수색…
소개
배열이 아닌 모든 복합 유형에는 특수 특성이있는 구성 요소 인 판별자가 포함될 수 있습니다. 판별은 개별 유형 또는 액세스 유형 일 수 있습니다. 후자의 경우 액세스 유형은 명명 된 액세스 유형이거나 익명 일 수 있습니다. 익명 액세스 유형의 판별자를 액세스 매개 변수와 유추하여 액세스 판별 자라고합니다.
판별 된 레코드 유형
식별 된 레코드 유형의 경우, 구성 요소 중 일부는 판별 자라고하고 나머지 구성 요소는 판별 유형에 따라 달라질 수 있습니다. 판별자는 유형을 매개 변수화하는 것으로 생각할 수 있으며 구문은 이러한 유추를 나타냅니다. 이 예제에서는 정방향 행렬에 양수를 매개 변수로 제공하는 형식을 만듭니다.
type Square(X: Positive) is
record
S: Matrix(1 .. X, 1 .. X);
end record;
그런 다음 3 by 3의 사각형을 만들려면 다음과 같이 yout 유형의 Square를 호출하십시오.
Sq: Square(3);
변형 레코드 구조
레코드 유형의 판별자는 오브젝트의 구조에 영향을 줄 수 있습니다. 개체가 생성 될 때 discriminant가 특정 값을 가졌기 때문에 구성 요소를 선택할 수 있습니다. 이 변형을 지원하기 위해 레코드 유형의 정의에는 판별에 따라 달라지는 사례가 있습니다.
type Fruit is (Banana, Orange, Pear);
type Basket (Kind : Fruit) is
record
case Kind is
when Banana =>
Bunch_Size : Positive;
Bunches_Per_Box : Natural;
when Pear | Orange =>
Fruits_Per_Box : Natural;
end case;
end record;
그런 다음 바나나 상자를 만들려면
Box : Basket (Banana);
Box 객체에는 이제 Bunch_Size 및 Bunches_Per_Box 와 같은 Bunch_Size Kind 이외에 두 개의 레코드 구성 요소가 있습니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow