首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ada:如何枚举由整数和其他类型组成的类型?

Ada:如何枚举由整数和其他类型组成的类型?
EN

Stack Overflow用户
提问于 2016-08-23 14:49:25
回答 2查看 382关注 0票数 3

例如,我想要创建一个类型来代表所有的卡片等级(即2-10,Jack,Queen,King和Ace)。

我想这么做:

代码语言:javascript
复制
    type Rank is (2,3,4,5,6,7,8,9,10,Jack,Queen,King,Ace);

但我知道这个错误:

代码语言:javascript
复制
    identifier expected
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-23 15:19:28

你不能这么做。

枚举类型声明中的列表由标识符和/或字符文本组成。在这种情况下,不可能有整数字面值。

您可以使用表示子句指定用来表示枚举数的值,但我认为这不是您想要的。

只需使用标识符:

代码语言:javascript
复制
type Rank is (R2,R3,R4,R5,R6,R7,R8,R9,R10,Jack,Queen,King,Ace);
票数 5
EN

Stack Overflow用户

发布于 2016-08-24 07:22:58

您可以声明两种助手类型和一种组合类型:

代码语言:javascript
复制
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;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39104404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档