たとえば、カードのランク(つまり、2-10、Jack、Queen、King、Ace)のすべてを表すタイプを作成したいとします。Ada:整数型と他の型からなる型を列挙するには?
私はこれをやって考える:
type Rank is (2,3,4,5,6,7,8,9,10,Jack,Queen,King,Ace);
しかし、私はこのエラーを取得する:
identifier expected
たとえば、カードのランク(つまり、2-10、Jack、Queen、King、Ace)のすべてを表すタイプを作成したいとします。Ada:整数型と他の型からなる型を列挙するには?
私はこれをやって考える:
type Rank is (2,3,4,5,6,7,8,9,10,Jack,Queen,King,Ace);
しかし、私はこのエラーを取得する:
identifier expected
あなたがすることはできません。
列挙型宣言のリストは、識別子および/または文字リテラルから成ります。その文脈で整数リテラルを持つことはできません。
表現句を使用して列挙子を表すために使用する値を指定できますが、それはあなたが望むものとは思えません。
だけの識別子を使用します。
type Rank is (R2,R3,R4,R5,R6,R7,R8,R9,R10,Jack,Queen,King,Ace);
次の2つのヘルパータイプと組み合わせたものを宣言することができます:
package Mixed_Enumeration_And_Integer is
type Integer_Values is range 1 .. 10;
type Enumeration_Values is (Jack, Queen, King, Ace);
type Object is private;
function "+" (Item : Integer_Values) return Object;
function "+" (Item : Enumeration_Values) return Object;
function "+" (Item : Object) return Integer_Values;
function "+" (Item : Object) return Enumeration_Values;
function "=" (Left : Integer_Values;
Right : Object) return Boolean;
function "=" (Left : Enumeration_Values;
Right : Object) return Boolean;
private
type States is (Uninitialized, Integer, Enumeration);
type Object (State : States := Uninitialized) is
record
case State is
when Uninitialized => null;
when Integer => I : Integer_Values;
when Enumeration => E : Enumeration_Values;
end case;
end record;
end Mixed_Enumeration_And_Integer;
は偉大な答えをいただき、ありがとうございます。 –