将字符值添加到泛型类型

时间:2011-11-10 02:36:47

标签: ada

如果我必须为其指定一个Character值,我应该使用哪种泛型? 现在我在通用声明中使用类型Char is(<>);
并分配如下字符值:

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

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

它有效,但我认为应该有更好的方法。

2 个答案:

答案 0 :(得分:2)

您可以使用'Pos'Val

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

generic
   type Generic_Char is (<>);
   with function To_Generic_Char (Source : Character) return Generic_Char is <>;
package Foo is
...

这样你的通用包就不必关心转换了。

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

答案 1 :(得分:1)

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

在大多数情况下,这意味着您可以指定Char,您可以对它们进行比较,并且您可以访问“离散”可用的任何属性。检查我们的language-defined attributes的便捷花花公子在线LRM页面(在使用泛型时保留此书签),寻找使用“离散”或“标量”对象/类型的页面,我们看到这包括:

  • '第一
  • '图像
  • '最后
  • '最大
  • '分钟
  • 'PRED
  • '范围
  • 'SUCC
  • 'VAL
  • '值
  • ('image&'value)的各种wide_变种
  • 任何类型的所有对象都可以使用的常见嫌疑人(例如:'大小,'输入等)