什么=>在阿达做

时间:2015-02-04 11:26:56

标签: operators ada

我调试了一些Ada代码,并遇到了一个循环,其中有几行包含运算符:=>。我之前没有遇到过这个问题,快速的Google在查找它的功能方面并没有多少帮助......有谁可以帮助我?

例如,在循环中,有如下行:

time => data.time;
distance => data.distance;

这是将右侧变量的值分配给左侧的变量 - 这样左侧的变量现在等于右侧的变量值,或者可能分配变量的内存地址左边,以便它们指向右边变量的位置?

非常感谢任何帮助。

编辑以显示周围的代码(04/02/2015 @ 1700)

因此,使用=>的某个地方的更全面的例子是:

if data.IASType /= Types.TOA and data.IASType /= Types.RNG then
  -- Calculate positionOfTarget using the laterRelativeTime
  ...
  SteeringUtilities.calculateApproachData
    (...
     time => data.time,
     distance => data.distance,
end if;

道歉 - 刚刚意识到我错过了引用两行,将;放在行的末尾而不是,

1 个答案:

答案 0 :(得分:4)

=>不是"运营商"。它是一个语法元素,其最常见的目的是让您通过显示列表中每个项目的含义来指定事物列表(例如子程序调用的参数),而不是简单地按顺序列出它们。例如,其中一个Put_Line过程定义如下:

procedure Put_Line(File : in  File_Type; Item : in String);

当您拨打电话时,以下呼叫都是等效的:

Put_Line(My_File, "Hello, world");
Put_Line(File => My_File, Item => "Hello, world");
Put_Line(Item => "Hello, world", File => My_File);

语法用于许多其他事情,例如判别式列表,泛型实例化中的参数,编译指示的参数等。它还用于记录和数组聚合 - 对于数组聚合,您可以在others的左侧有索引,多个索引,索引范围或=>