Delphi TFunc<;T>;-有没有办法传递输入参数修改器?
我需要将函数作为如下参数传递:Delphi TFunc<;T>;-有没有办法传递输入参数修改器?,delphi,generics,Delphi,Generics,我需要将函数作为如下参数传递: procedure SomeProc(AParameter: TFunc<Integer, Integer>); SomeProc(function(Arg: Integer): Integer begin Result := DoSomething(Arg) end); …代码有效。但是使用参数修改器,如const、var或默认值,如 function DoSomething(const AInput: Integer = 0): Integer
procedure SomeProc(AParameter: TFunc<Integer, Integer>);
SomeProc(function(Arg: Integer): Integer begin Result := DoSomething(Arg) end);
…代码有效。但是使用参数修改器,如const、var或默认值,如
function DoSomething(const AInput: Integer = 0): Integer;
…编译器返回不匹配参数列表的错误
是否有方法传递参数修改器,或避免此错误
非常感谢你的建议
是否有方法传递参数修改器,或避免此错误
不可以。您提供给SomeProc
的函数必须具有与TFunc
匹配的签名。您可以使用以下匿名方法将其包装:
procedure SomeProc(AParameter: TFunc<Integer, Integer>);
SomeProc(function(Arg: Integer): Integer begin Result := DoSomething(Arg) end);
仅当您将其声明为方法引用时:
type TDoSomething = reference to function(const AInput: Integer = 0): Integer;
function SomeProc(AParameter: TDoSomething): Integer;
begin
Result := AParameter;
end;
function CallSomeProc: integer;
begin
Result := SomeProc(function(const AInput: Integer = 0): Integer begin Result := AInput end);
end;
您建议如何指定此函数?函数DoSomething(const-AInput:Integer=0):整数;你不能传递那个函数。编写另一个包装它并将调用转发给不兼容的函数。