我刚刚开始使用 Ada,我发现通用包声明相当愚蠢。也许我做得不对,所以我正在寻找更好的选择。
看看下面的例子。
package STD_Code_Maps is new
Ada.Containers.Map(Key_Type => STD_Code_Type;
Element_Type => Ada.Strings.Unbounded.Unbounded_String);
STD_Code_Map : STD_Code_Maps.Map;
-- . . .
procedure Do_Something is
Item : Ada.Strings.Unbounded.Unbounded_String;
begin
Item := STD_Code_Maps.Element(STD_Code_Maps.First(STD_Code_Map));
-- Do something with the Item
-- . . .
end Do_Something;
简单地能够写STD_Code_Map.First.Element
而不是被遗忘的东西会更干净STD_Code_Maps.Element(STD_Code_Maps.First(STD_Code_Map));
显然我做错了——我想。我在那里至少重复了三次 STD_Code_Map 短语。我完全赞成冗长和一切,但实际上我正在编写的代码对我来说似乎很糟糕和愚蠢。
我想知道是否有不需要您将包重命名package Map renames STD_Code_Maps;
为当然会缩短代码的解决方案,但我不想在每个过程条目上都这样做。我真的认为类似的事情STD_Code_Map.First.Element
会简单得多。这可以在 Ada 2012 中完成吗?
注意:默认使用 Unbounded_String 包也很困难。标准库设计者是否真的对荒谬和过长的包层次结构给予了很多考虑?
感谢您阅读本文,并可能帮助我。我是艾达的新手。