如何使用“separate”关键字

San*_*pta 5 ada

我无法弄清楚separateAda 中的关键字及其深度概念。请举个小例子帮助我理解?

假设我有一个嵌套过程

with ada.text_io; use ada.text_io;
procedure main is
   procedure proc is
   begin
      put_line ("i am proc");
   end proc;
begin
   put_line ("main");
end main;
Run Code Online (Sandbox Code Playgroud)

如何使用单独的关键字?

NWS*_*NWS 5

您主要使用单独的关键字来实现两种效果之一。

  1. 操作系统特定操作。(将 2 个版本的程序/函数放在不同的目录中,并针对 2 个不同的目标进行编译)
  2. 将冗长的过程与周围的代码分开。

这是显示语法的示例。

package_x.ads

package Package_X is

   procedure Foo;
   procedure Sep;

end Package_X;
Run Code Online (Sandbox Code Playgroud)

package_x.adb

package body Package_X is

   procedure Foo is 
   begin
      null;
   end Foo;

   procedure Sep is separate;

end Package_X;
Run Code Online (Sandbox Code Playgroud)

package_x-sep.adb

separate (Package_X) procedure Sep is 
begin
   null;
end Sep;
Run Code Online (Sandbox Code Playgroud)