可以在过程中传递一个对象函数作为参数,而不是传递整个对象吗?
TMyRecord = record public class function New(const a,b: Integer): TMyRecord; static; function GiveMeAValue(inputValue: integer): Single; public a,b: Integer; end;
该功能可以是:
function TMyRecord.GiveMeAValue(inputValue: Integer): Single; begin RESULT := inputValue/(self.a + self.b); end;
然后我希望定义一个调用类函数GiveMeAValue的过程,但是我不想将整个记录传递给它.我可以这样做,例如:
Procedure DoSomething(var1: Single; var2,var3: Integer,?TMyRecord.GiveMeAValue?); begin var1 = ?TMyRecord.GiveMeAValue?(var2 + var3); //Do Some Other Stuff end;
如果是这样,那么如何正确地传递函数作为过程参数?
解决方法
您可以为函数定义新的类型
TGiveMeAValue= function(inputValue: integer): Single of object;// this deFinition works fine for methods for records.
然后定义DoSomething方法
Procedure DoSomething(var1: Single; var2,var3: Integer;GiveMeAValue: TGiveMeAValue); begin writeln(GiveMeAValue(var2 + var3)); end;
并使用如此
var L : TMyRecord; begin l.a:=4; l.b:=1; DoSomething(1,20,5,L.GiveMeAValue); end;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。