我是ada的新手,我想定义一个矢量包,并且能够将它传递给一个方法,我应该在哪里定义包,这是我需要的代码
package Document is new Ada.Containers.Vectors(Positive,Unbounded_String);
use Document;
我不知道放在哪里所以它对主要和另一个功能文件是可见的。
答案 0 :(得分:6)
如果你正在使用GNAT(GPL version from AdaCore或FSF GCC),你需要一个文件document.ads
(在你要放置主程序的同一个工作目录中其他文件)。
您的新软件包Document
需要“with
”其他两个软件包:Ada.Containers.Vectors
和Ada.Strings.Unbounded
。
您无法将use Document;
放入document.ads
;它需要进入Document
使用with
的包。 use
子句控制您是否需要编写完全限定名称 - 例如,您可以按照自己的意愿编写Document
with Ada.Containers.Vectors;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
package Document is new Ada.Containers.Vectors (Positive, Unbounded_String);
但是编写
会更常规with Ada.Containers.Vectors;
with Ada.Strings.Unbounded;
package Document is new Ada.Containers.Vectors
(Positive,
Ada.Strings.Unbounded.Unbounded_String);
您的主程序和其他软件包现在可以说with Document;
(如果您愿意,还可以use Document;
)。
答案 1 :(得分:3)
除了Simon的答案之外,您可以将您在任何地方说明的两行放入declarative part。这可以在子程序中,如主程序,库或其他任何地方。
主程序示例:
with Ada.Containers.Vectors;
with Ada.Strings.Unbounded;
procedure My_Main is
package Document is new Ada.Containers.Vectors
(Positive,
Ada.Strings.Unbounded.Unbounded_String);
-- use it or declare other stuff...
begin
-- something...
end My_Main;
要在多个源文件中使用它,请将其放入一个软件包或者像Simon写的一个单独的文件中。
答案 2 :(得分:2)