有没有适当的例子来解释 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 语言实现
调用.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)