Pascal:在另一个函数/过程的参数中的函数

时间:2014-06-18 23:29:52

标签: function pascal

我没有在网上发现任何关于此事的信息(可能是坏关键字)。我试图找到一种在Pascal中给出参数函数的方法。例如:

function foo1(arg1, arg2 : integer) : double; begin ... end; function foo2(func : function, arg1 : integer) : double; begin foo2 := foo1(arg1, 2); end;

呼叫应该是foo2(foo1, arg1)。 有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

发现这个:

type TFunction = function (arg1, arg2 : integer) : integer; function foo1(arg1, arg2 : integer) : integer; begin foo1 := arg1 + arg2; end; function foo2(func : TFunction, arg1 : integer) : integer; begin foo2 := func(arg1, 2) * 3; end;

电话应该是foo2(@foo1, 2)

答案 1 :(得分:-1)

是的,它是posibble,并且它比你想象的更简单,不需要发送函数作为参数,声明的每个函数/过程都可以在之后实现的另一个模块中使用声明(唯一的例外是尝试从函数调用过程,你不能这样做)。

我认为这就是你想要的:

function foo1(arg1, arg2 : integer) : double;
begin
...
end;
function foo2(arg1 : integer) : double;
begin
    foo2 := foo1(arg1, 2);
end;

begin
...
foo2(2);

因为在foo2之前声明了foo1,你可以从foo2调用它。