是否可能将对象函数作为参数传递给过程,而不是传递整个对象?
我有一个记录定义,其中包含已定义为公共类参数的函数:
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;
如果是这样的话,那我应该如何正确地将函数作为过程参数传递?
procedure-or-function of object
语法比reference to procedure-or-function of object
语法更易读。在一行内编写procedure (a,b,c:Integer) begin ... end
开始变得丑陋。 - Warren P