我没有在网上发现任何关于此事的信息(可能是坏关键字)。我试图找到一种在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)
。
有没有办法做到这一点?
答案 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调用它。