-1

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

type name is (BOB, SKIPPY, DO)

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

周围有没有不必使用字符串的地方?似乎老师这样做是为了给我们施加压力。

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

4

2 回答 2

4

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

当保留字在给定情况下是最好的字时,有一些常用的技术:

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

如果您担心输出它会是什么样子,那么通常不鼓励使用简单的枚举到字符串属性 'Image,因为它是枚举值的文字描述,因此输出的内容变为与您选择的编码标识符紧密耦合。调试很好,但对于人类可读的输出,您应该使用其他东西,例如枚举值的大小写或使用枚举到字符串的映射。

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

于 2012-12-07T21:44:53.407 回答
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;
于 2012-12-08T18:41:46.083 回答