Пример вызова по результату

Есть ли подходящий пример для объяснения результатов по запросу? (не псевдокод)

Я узнал, что Алгол 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)

Другие вопросы по тегам