配列をループし、現在の配列インデックスが列挙型の値であるかどうかをチェックしたいと思います。配列と同様に列挙は、次のように定義されています列挙型の値を比較
type Option is (None, A, B, C, D);
type Votes is array(Option) of Natural;
Zero_Option_Distribution: constant Votes := (others => 0);
Votes_Distribution: Votes := Zero_Option_Distribution;
ループは次のようになります。
if I = Voting_System.Option(None) then -- ...
のように、私はすでに私の心に来たすべてのものを試してみました
for I in Voting_System.Votes_Distribution'Range loop
-- this is where I would like to check whether I is a representation of either of the enum values
end loop;
および
if I'Val("None") then -- ...
とそれ以外のバージョンでは動作しませんでした。
これを達成するためのアイデアはもうありません。あなたの質問では、この行に基づいて
'I'の型は' Votes_Distribution'のインデックス型です。 'Party'は' Option'ではありません。あなたがしていることは意味をなさないと思われます。 'Party'が' None'を含む 'Option'のサブタイプとして他の場所で宣言された場合、' if I = None'が動作するはずです(関連する宣言を可視化したと仮定します)。 –
あなたの質問をPartyの定義で更新すると、質問にいくらか明確になるかもしれません。 – NWS