Ich habe nur von mir selbst gemacht.
Pseudo-Code
begin
integer n;
procedure p(k: integer);
begin
n := n+1;
k := k+4;
print(n);
end;
n := 0;
p(n);
print(n);
end;
Implementieren Ada Sprache
call.adb
with Gnat.Io; use Gnat.Io;
procedure call is
x : Integer;
Procedure NonSense (A: in out integer) is
begin
x := x + 1;
A := A + 4;
Put(x);
end NonSense;
begin
x := 0;
NonSense (x);
Put(" ");
Put(x);
New_Line;
end call;
Da Ada mit verwendet Call-by-Ergebnis Weise sollte Ergebnis 1 bis 4 sein. (Es könnte durch Eingabe dieses Codes in den Online-Ada-Compiler "http://www.tutorialspoint.com/compile_ada_online.php" überprüft werden)
Und anderes Ergebnis angewandt unterschiedliche Durchgangsparametertypen sein sollten ...
Anruf von Wert: 1 1
call by reference: 5 5
(vergleichen> Anruf durch Mehrwert-Ergebnis 4: 1)
Soweit ich in Ada sehen kann, wird der Begriff "call-by-result" fast nie verwendet, es ist viel einfacher, Parameter Passing-Modi zu denken - dh sagen, was Sie wollen, anstatt wie Sie es wollen geschehen. Suchen Sie insbesondere nach einem Code, der OUT-Parameter verwendet (nicht "IN OUT", was einem Call-by-Value-Ergebnis entspricht). –
Was bedeutet "call-by-result"? Ist es eine Parameterübergabe-Methode? –
[Diese Antwort] (http://stackoverflow.com/a/3004067/40851) erklärt 'in out', was wie @BrianDrummond sagt Call-by-Value-Ergebnis entspricht. Sie können wahrscheinlich call-by-result (d. H. Das Ada out) daraus herleiten. –