Ada 向泛型类型添加字符值

Ada 向泛型类型添加字符值,ada,Ada,如果必须为其指定字符值,应使用哪种泛型类型? 现在我使用的是typeChar is()在泛型声明中, 并按如下方式指定字符值: XY:GenericChar; CharacterVariable: Character:='A'; XY:=GenericChar'Value(Character'Image(CharacterVariable)); 它可以工作,但我认为应该有更好的方法。您可以使用'Pos和'Val 在不相关的枚举类型之间进行转换是非常重要的。最好使用如下转换函数: generi

如果必须为其指定字符值,应使用哪种泛型类型?
现在我使用的是type
Char is()在泛型声明中,
并按如下方式指定字符值:

XY:GenericChar;
CharacterVariable: Character:='A';

XY:=GenericChar'Value(Character'Image(CharacterVariable));

它可以工作,但我认为应该有更好的方法。

您可以使用
'Pos
'Val

在不相关的枚举类型之间进行转换是非常重要的。最好使用如下转换函数:

generic
   type Generic_Char is (<>);
   with function To_Generic_Char (Source : Character) return Generic_Char is <>;
package Foo is
...
通用
类型Generic_Char是();
通过函数返回泛型字符(源:字符),返回泛型字符为;
包Foo是
...
这样,您的通用包就不必关心转换


要实例化包,您必须创建函数。

您使用的通用形式参数可以与任何“离散类型”一起提供。这意味着客户端可以使用任何类型的整数相关类型或枚举来实例化泛型。这也意味着在例程中只有整数和枚举都可用的操作

在大多数情况下,这意味着您可以分配
Char
s,您可以比较它们,并且您可以访问“离散”可用的任何属性。查看我们方便的dandy online LRM页面(在使用泛型时将其保留为书签),查找可使用“离散”或“标量”对象/类型的对象/类型,我们发现这包括:

  • “首先
  • "形象",
  • “最后
  • “马克斯
  • "敏"
  • “pred
  • '范围
  • “成功
  • “瓦尔
  • "价值",
  • (分类
    wide.
    图像和值的变体)
  • 任何类型的所有对象(例如:“大小”、“输入”等)都可以使用的常用参数

我猜您有一个通用的形式类型,它共享
字符的属性
,因此它们具有相同的文本。在这种情况下,我必须问‘为什么’?请为你的问题提供更多的背景。