ada语法问题

时间:2012-05-16 09:06:53

标签: ada

我是ada的新手,我想定义一个矢量包,并且能够将它传递给一个方法,我应该在哪里定义包,这是我需要的代码

package Document is new Ada.Containers.Vectors(Positive,Unbounded_String);
use Document;

我不知道放在哪里所以它对主要和另一个功能文件是可见的。

3 个答案:

答案 0 :(得分:6)

如果你正在使用GNAT(GPL version from AdaCore或FSF GCC),你需要一个文件document.ads(在你要放置主程序的同一个工作目录中其他文件)。

您的新软件包Document需要“with”其他两个软件包:Ada.Containers.VectorsAda.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)

除了this之外,要实际声明你需要放入一个声明部分的向量:

my_document : document.vector;

然后您可以使用向量package

中描述的方法