2012-12-07 134 views
-1

所以我有声明的类型,它指的是人民的名称,其中一个名称是“做” 例如ADA保留字作为标识符

type name is (BOB, SKIPPY, DO) 

Compiler error: reserved word "Do" cannot be used as identifier.

有没有解决这个任何地方而不必使用字符串?看起来像老师这样做的目的是为了强迫我们。

我做了一个通用的包,所以更容易做一个变量字符串类型,只是实例化呢?

回答

4

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

有中通常采用的技术了一把当保留字是在特定情况下的最好的词:

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

如果你担心这将如何看,如果你输出吧,好,天真枚举到字符串属性,“图像,通常不鼓励,因为它是枚举值的文字描述,因此,您输出的内容与您选择的编码标识紧密耦合。调试很好,但对于人类可读的输出,你应该使用别的东西,比如枚举值的套管或使用枚举到字符串的Map。

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

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;