ada保留字作为标识符

时间:2012-12-07 20:36:59

标签: types ada

所以我有一个我声明的类型,它引用了人名,其中一个名字是“Do” 例如

type name is (BOB, SKIPPY, DO)
  

编译器错误:保留字“Do”不能用作标识符。

这周围的任何地方都没有使用字符串吗?似乎老师故意这样做是为了强迫我们使用。

我制作了一个通用包,所以更容易制作一个变量字符串类型而只是实例化它?

2 个答案:

答案 0 :(得分:4)

保留字是保留字,故事结尾。

当保留字是特定情况下的最佳单词时,有一些常用的技术:

  • 前缀,例如(Name_Bob,Name_Skippy,Name_Do);
  • 后缀,例如(Bob_Name,Skippy_Name,Do_Name);
  • “拼错”它,例如(Bob,Skippy,Do_Do);

如果您担心如果输出它将会是什么样子,那么,通常不鼓励天真的枚举到字符串属性'Image,因为它是枚举值的字面描述,因此它的内容您的输出与您选择的编码标识符紧密相关。它适用于调试,但对于人类可读的输出,您应该使用其他内容,例如枚举值上的大小写或使用枚举到字符串Map。

除非有一些令人信服的理由,否则使用字符串来表示枚举值无法获得任何好处。

答案 1 :(得分:2)

使用前缀[或后缀]选项,然后您可以执行以下操作:

type Names is ( Name_Bobby, Name_Dave, Name_Calvin, Name_Do );

Function Put( Item : In names ) Return String is
  Prolog : Constant String:= "Name_";
  Image  : Constant String:= Item'Image;
begin
  Return Image( Image'First+Prolog'Length..Image'Last );
end Put;