gpt4 book ai didi

ada - 在Ada中使用IN OUT

转载 作者:行者123 更新时间:2023-12-03 13:57:56 25 4
gpt4 key购买 nike

下面给出的是ada中的一些代码

  with TYPE_VECT_B; use TYPE_VECT_B;

Package TEST01 is
procedure TEST01
( In_State : IN VECT_B ;
Out_State : IN OUT VECT_B );

function TEST02
( In_State : IN VECT_B ) return Boolean ;

end TEST01;


TYPE_VECT_B包规范和主体也在下面定义

  Package TYPE_VECT_B is

type VECT_B is array (INTEGER range <>) OF BOOLEAN ;

rounded_data : float ;
count : integer ;
trace : integer ;
end TYPE_VECT_B;

Package BODY TYPE_VECT_B is
begin
null;
end TYPE_VECT_B;


变量In_State和Out_State到底是什么意思?我认为In_State表示输入变量。我只是对Out_State的实际含义感到困惑?

最佳答案

子程序可以读取但不能写入in参数。 in是默认值。在Ada 2012之前,仅允许函数具有in参数。实际参数是一个表达式。

out参数表示先前的值无关紧要。子程序应写入参数。写入参数后,子程序可以读回已写入的内容。退出时,实际参数将接收写入的值(该区域存在复杂性!)。实际参数必须是变量。

in out参数与out参数类似,不同之处在于前一个值值得关注,并且可以在分配前由子程序读取。例如,

procedure Add (V : Integer; To : in out Integer; Limited_To : Integer)
is
begin
-- Check that the result wont be too large. This involves reading
-- the initial value of the 'in out' parameter To, which would be
-- wrong if To was a mere 'out' parameter (it would be
-- uninitialized).
if To + V > Limited_To then
To := Limited_To;
else
To := To + V;
end if;
end Add;

关于ada - 在Ada中使用IN OUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3003480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com