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

Function Pascal:另一个函数/过程的参数中的函数,function,pascal,Function,Pascal,我在网上找不到关于这个的任何东西,也许是不好的关键词。我正在试图找到一种方法,用Pascal语言给出一个函数的参数。例如: 函数foo1arg1,arg2:integer:double; 开始 ... 终止 函数foo2func:function,arg1:integer:double; 开始 foo2:=foo1arg1,2; 结束 调用应该类似于foo2foo1,arg1。 有什么方法可以做到这一点吗?发现: 类型TFunction=function arg1,arg2:integer:in

我在网上找不到关于这个的任何东西,也许是不好的关键词。我正在试图找到一种方法,用Pascal语言给出一个函数的参数。例如:

函数foo1arg1,arg2:integer:double; 开始 ... 终止 函数foo2func:function,arg1:integer:double; 开始 foo2:=foo1arg1,2; 结束

调用应该类似于foo2foo1,arg1。 有什么方法可以做到这一点吗?

发现:

类型TFunction=function arg1,arg2:integer:integer; 函数foo1arg1,arg2:integer:integer; 开始 foo1:=arg1+arg2; 终止 函数foo2func:t函数,arg1:integer:integer; 开始 foo2:=funcarg1,2*3; 终止


电话应该是这样的foo2@foo1,2

是的,它是可以实现的,而且比您想象的要简单,不需要将函数作为参数发送,声明的每个函数/过程都可以在声明后实现的其他模块中使用唯一的例外是尝试从函数调用过程,你不能那样做

我想这就是你想要的:

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

begin
...
foo2(2);

因为foo1是在foo2之前声明的,所以您可以从foo2调用它。

您要查找的关键字是过程类型。从这个问题看不出编译器是fpc,哪种模式delphi仅在中有效。不管怎样,你不必用它,你可以用“@”来代替。我没有把@放在我应该放的地方。在{@modedelphi}中?在t函数之前?我应该删除{$MODE DELPHI}吗?如果你不想使用MODE DELPHI,你可以用@foo1调用foo2,这正是我想要的。编辑。这不是我要找的。我正在寻找一种在Python中制作类似optparse的东西的方法。在此模块中,您可以在参数上添加回调函数。类似parser.add_option'-n','-name',action='callback',callback=check_name。我想用pascal做同样的事情,但我正在寻找一种方法,将check_name这样的函数作为参数。«唯一的例外是试图从函数调用过程,你不能这样做»这是错误的,不是吗?