Ada 程式設計/屬性/'Enum Rep
外觀
此語言特性在 Ada 2022 中引入。 User_Enum_Type'Enum_Rep(Instance); 其中 User_Enum_Type 是一個 列舉型別,而 Instance 是該型別的一個例項,將返回該列舉例項的底層表示。列舉的預設表示基於其位置(從零開始)。但是,Ada 提供了語言設施來獨立於位置指定表示。Enum_Rep 允許您檢索該表示。通常情況下,在 Ada 中,列舉是它們自己的型別,表示並不重要。但是,出於跨語言相容性和在嵌入式程式設計中可能使用的目的,可以操縱表示。雖然核心語言允許您更改表示,但它沒有提供用於檢索表示的便捷屬性。此擴充套件屬性解決了這一需求。使用它需要您知道用於支援列舉的底層型別,因為 Enum_Rep 返回該型別。通常情況下,標準型別 Integer 就足夠了。
請注意,此屬性現在是 Ada 2022 的標準屬性。在早期的 Ada 版本中,它在 GNAT 中可用,作為一個實現定義的屬性,但獲取內部表示的標準且可移植的方法是使用 Unchecked_Conversion 的例項。
typeEnum_Typeis(Enum1, Enum2, Enum3); Enum_Val : Enum_Type := Enum1;
pragma Assert (Enum_Type'Enum_Rep(Enum_Val) = 0); -- OK
- 13.4:列舉表示子句 [註釋]
- 附錄 K:語言定義的屬性 [註釋]
