在pascal中,我可以使用函数作为参数调用过程吗?

时间:2017-05-01 19:04:30

标签: delphi pascal

empty(game, left(actualPos));

empty是有2个参数的程序,我想调用一个函数(左)作为第二个参数。帕斯卡尔有可能吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果empty()的第二个参数的类型与left()的返回值的类型相同(或者left()的值可以自动转换/提升为empty()的类型var)的第二个参数,第二个参数不是通过引用传递(通常声明为empty()),那么您可以将BindableObject称为你已经在上面展示了。

如果两个约束都不为真,则调用将在编译时生成错误。

答案 1 :(得分:0)

我在问题中理解的是这样的。我冒昧地猜测细节并将事情遗漏,但代码应该说明一切(并且是有效的Delphi语法):

type
  TGameData=class
    //add more fields here
  end;
  TGamePosition=record
    //add more fields here
  end;
  TSomeGamePosFunc=function(gd:TGameData;gp:TGamePosition): boolean;

  function Left(game:TGameData;APos:TGamePosition): boolean;
  begin
    //if something with the values in the fields of APos then
    Result:=true;
    //else Result:=false;
  end;

  procedure Empty(game:TGameData;something:TSomeGamePosFunc);
  var
    p:TGamePosition;
  begin
    //initialize game
    //for p.x:=0 to width of field
    //for p.y:=0 to height of field?
    //if
    something(game,p);
    //then...
  end;