call-by-result を説明する適切な例はありますか? (疑似コードではありません)
ALGOL 68、Ada がこの方法を使用できることを知りました
が、Call-by-Result の明確な例が見つかりません。
call-by-result を説明する適切な例はありますか? (疑似コードではありません)
ALGOL 68、Ada がこの方法を使用できることを知りました
が、Call-by-Result の明確な例が見つかりません。
自分で作っただけです。
疑似コード
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 になるはずです (このコードを online-Ada-compiler " http://www.tutorialspoint.com/compile_ada_online.php " に入力することで確認できます) 。
そして、別の結果を適用した別のパラメータ タイプは次のようになります...
値による呼び出し: 1 1
参照による呼び出し: 5 5
(比較> 値による呼び出し-結果: 1 4)