Variant Records



Variant Records - Basic Concepts



Variant Record for Transactions

    type PaymentType is (Cash, Check, Credit);

    -- The_Type is called the discriminant of the type
    type Transaction(The_Type: PaymentType := Cash) is record
    
        Amount: Integer;

        case The_Type is
            when Cash =>
                Discount: boolean;
            when Check =>
                CheckNumber: Positive;
            when Credit =>
                CardNumber: String(1..5);
                Expiration: String(1..5);
        end case;
    end record;
        


Ada Code for Transactions



Motivation for Variant Records



Arrays of Variant Records



Implementation



Dangers of Variant Records



Type Safety and Variant Records



Relation to Subtyping



Variant Records in Other Languages