在Delphi中如何传递函数作为参数?
发布时间:2020-12-15 04:31:03 所属栏目:大数据 来源:网络整理
导读:可以在过程中传递一个对象函数作为参数,而不是传递整个对象吗? 我有一个记录定义,函数定义为一个公共类参数,如: TMyRecord = record public class function New(const a,b: Integer): TMyRecord; static; function GiveMeAValue(inputValue: integer): Sin
可以在过程中传递一个对象函数作为参数,而不是传递整个对象吗?
我有一个记录定义,函数定义为一个公共类参数,如: 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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |