在过程中使用包规范

Use a package spec inside a procedure

我想在过程中使用包规范。

缺少一些东西,但我不知道是什么。

using_ads_package.adb:14:11: "var" is not visible

using_ads_package.adb:14:11: non-visible declaration at line 8

with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Ada.Text_IO.Unbounded_IO;  use Ada.Text_IO.Unbounded_IO;

Procedure using_ads_package is

   Package variable is

      var : Unbounded_String ;
  
   end variable ;

Begin
 
   get_line(var);
 
End using_ads_package ;

在不编译的情况下,我建议使用以下行:

 get_line(var);

应该是:

 get_line(variable.var);

procedure Using_Ads_Package is
   package Variable is
      Var : Unbounded_String;
   end Variable;
begin

您在 package Variable 中创建了一个新范围。在 Variable 之外,Var 不直接可见。

Variable 之外,您有两种方式引用 Var

首先,您可以命名明确声明的包:

   Get_Line (Variable.Var);

或者,您可以 use Variable:

   package Variable is
      Var : Unbounded_String;
   end Variable;
   use Variable;
begin
   Get_Line (Var);