Пример вызова по результату
Есть ли подходящий пример для объяснения результатов по запросу? (не псевдокод)
Я узнал, что Алгол 68, Ада может использовать этот путь,
но я не могу найти какой-либо четкий пример Call-by-Result.
1 ответ
Я просто сделал сам.
псевдокод
begin
integer n;
procedure p(k: integer);
begin
n := n+1;
k := k+4;
print(n);
end;
n := 0;
p(n);
print(n);
end;
Реализация с использованием языка Ada
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;
Так как Ada использует метод call-by-result, результат должен быть 1 4. (Это можно проверить, введя этот код в онлайн-Ada-компилятор " http://www.tutorialspoint.com/compile_ada_online.php").
И, другой результат применяется различные типы параметров передачи должны быть...
звонок по значению: 1 1
позвоните по ссылке: 5 5
(сравнить > вызов по значению-результату: 1 4)