我想循环一个数组并检查当前数组索引是否是枚举值。数组和枚举定义如下:
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;
The Loop看起来像这样:
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 = Voting_System.Option(None) then -- ...
和
if I'Val("None") then -- ...
还有一些版本,其中每个版本都没有用。
我真的没有任何想法来实现这一目标。
答案 0 :(得分:2)
使用=
比较枚举类型对象的值,就像任何其他类型的对象一样:
if I = None then
...
end if;
答案 1 :(得分:0)
-- this is where I would like to check whether I is a representation of either of the enum values
根据你问题中的这一行,我假设Party
是一个整数子类型或什么?你应该可以使用这样的东西:
-- (Checks if I is 0)
if (Integer(I) = Voting_System.Option'Pos(Voting_System.Option.None)) then
-- ...
答案 2 :(得分:0)
如果 Party 是一个独特的类型,根据ARM953.5.1§7和ARM95 AnnexK§175,您可以尝试这样的事情:
MailMessage o = new MailMessage("from@gmail.com", "to@gmail.com", "Subject", "Body");
NetworkCredential netCred = new NetworkCredential("from@gmail.com", "password");
SmtpClient smtpobj = new SmtpClient("smtp.gmail.com", 587);
smtpobj.EnableSsl = true;
smtpobj.Credentials = netCred;
smtpobj.Send(o);
在所有情况下都需要其他人,因为我们开始使用 Universal_Integer 类型。